我有三个列表,我想在所有这三个列表中找到最低值。 我已用此代码完成此操作:
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方法从list1
或list2
中弹出最低数字值?
答案 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.为每个列表找到一个分钟,然后在其中找到一个分钟。