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

find lowest value and pop from multiple lists in Python

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

    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中弹出这个值,哪个list都没有关系。

我试过 zip(list1, list2, list3) 但后来我不知道它属于哪个列表。

有谁知道从 list1list2 中弹出最小数值的 Pythonic 方法?

我会使用 itertools 的链

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

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

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]

我想您需要遍历所有 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

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

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