我有名单,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