从lis中获取次小值

2024-03-29 15:47:53 发布

您现在位置:Python中文网/ 问答频道 /正文

x = [[1,2,3,4],[4,5,0,1],[22,21,31,10]]


def minFor(x):

    removingvalue = []    

    for i in x:
        minvalue = i[0]

        for j in i:           
            if j < minvalue:
                minvalue=j

        for i in range(0,len(x)):
            if x==minvalue:
                removingvalue = removingvalue + minvalue
            return minvalue

        print(minvalue)

我要做的是首先从列表中找出最小的数字。然后删除最小值,再从列表中找到最小的数字。但是remove函数不起作用


Tags: 函数in列表forlenreturnifdef
3条回答

这将查找列表中每个子列表中第二小的子列表:

lst = [[1,2,3,4],[4,5,0,1],[22,21,31,10]] 

print([sorted(x)[1] for x in lst])
# [2, 1, 21]

您只需要将子列表按升序排序,然后选择第二个值。不需要从列表中删除值。在

要查找每个子列表的最小值,可以执行以下操作:

min_values = [min(sub_list) for sub_list in x]

就个人而言,我会使用内置的sorted函数:

def second_min(x):
    result = []
    for sublist in x:
        result.extend(sublist)
    # this flattens the sublists
    # into a single list
    result = sorted(result)
    return result[1]
    # return the second element

如果没有内置,则将sorted()调用替换为:

^{pr2}$

相关问题 更多 >