找到最低值并从Python中的多个列表中弹出

时间:2017-07-19 07:43:28

标签: python python-2.7 min

我有三个列表,我想在所有这三个列表中找到最低值。 我已用此代码完成此操作:

    list1 = [1,2,3,4,5]
    list2 = [1,5,6,7,8]
    list3 = [7,8,9,10,11]

    lowestnumber = min(min(list1), min(list2), min(list3))

结果是1,这很好,但是现在我想从list1或list2中弹出这个值,它与哪个列表无关。

我尝试的是zip(list1, list2, list3)但我不知道它属于哪个列表。

是否有人知道使用Pythonic方法从list1list2中弹出最低数字值?

4 个答案:

答案 0 :(得分:9)

由于您的列表已排序,您可以选择最小列表,然后弹出该列表中的第一项:

mn = min(list1, list2, list3, key=min).pop(0)
print mn
# 1

在这种情况下,该项目已从list1弹出:

print list1, list2, list3
# [2, 3, 4, 5] [1, 5, 6, 7, 8] [7, 8, 9, 10, 11]

答案 1 :(得分:0)

我会使用itertools'链

from itertools import chain
lowestnumber = min(chain(list1,list2,list3))

答案 2 :(得分:0)

我猜您需要遍历所有3个列表,因为您事先并不知道最小位置:

from itertools import chain

lst = [list1, list2, list3]
lowestnumber = min(chain(*lst))

for i in range(len(lst)):
    if mn in lst[i]:
        lst[i].remove(mn)
        break

此解决方案适用于任意数量的列表,并且不需要对它们进行排序。

答案 3 :(得分:0)

更多可能的解决方案: 1.首先将列表合并为一个。 2.为每个列表找到一个分钟,然后在其中找到一个分钟。