找到最低值并从 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)
但后来我不知道它属于哪个列表。
有谁知道从 list1
或 list2
中弹出最小数值的 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. 为每个列表找到一个最小值,然后在其中找到一个最小值。
我有三个列表,我想在所有这三个列表中找到最低值。 我用这段代码完成了这个:
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)
但后来我不知道它属于哪个列表。
有谁知道从 list1
或 list2
中弹出最小数值的 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. 为每个列表找到一个最小值,然后在其中找到一个最小值。