我有名單,list = [(1,2,5), (2,8,7),(3,6,9)]
的名單,我想找到第三列的最大數,所以我儘量搜索一列的最大數量列表蟒蛇名單
zipped = zip(*list)
print max(zipped[2])
但不顯示最大數量,任何人都知道爲什麼和任何解決方案?
我有名單,list = [(1,2,5), (2,8,7),(3,6,9)]
的名單,我想找到第三列的最大數,所以我儘量搜索一列的最大數量列表蟒蛇名單
zipped = zip(*list)
print max(zipped[2])
但不顯示最大數量,任何人都知道爲什麼和任何解決方案?
作品:
>>> li = [(1,2,5), (2,8,7),(3,6,9)]
>>> max(l[2] for l in li)
9
如果您有文字:
>>> li = [('1','2','5'), ('2','8','7'),('3','6','9')]
>>> max(int(l[2]) for l in li)
9
和作品,即使源是一個迭代器/發電機。這是在Py3.3上zip返回一個迭代器:
>>> gli=(e for e in li)
>>> max(int(l[2]) for l in gli)
9
>>> max(int(l[2]) for l in zip(*li))
9
適用於python2.7。
>>> l = [(1,2,5),(2,8,7),(3,6,9)]
>>> zip(*l)
[(1, 2, 3), (2, 8, 6), (5, 7, 9)]
>>> max(zip(*l)[2])
9
另一種選擇:
max(l,key=lambda x:x[2])[2]
或者如果你喜歡itemgetter
:
from operator import itemgetter
max(l,key=itemgetter(2))[2]
這可能是更有效的在內存方面,它會在python3工作。 x其中zip
不再返回list
。
這裏的關鍵是它可以讓你得到最大的完整元組(最大的由第三個元素決定),然後如果你想要的話就把正確的元素從那裏拉出來。
它代表什麼? – thegrinner 2013-02-14 21:21:17
這是要清除的元組清單...並且不要將您的列表命名爲'list',否則當您輸入list((1,2,3))時,您會感到困惑' – 2013-02-14 21:22:33
唯一不能工作的機會是你在Py3k上,zip是一個迭代器。 – JBernardo 2013-02-14 21:23:46