搜索列列表中最大数

2024-09-30 04:31:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,list = [(1,2,5), (2,8,7),(3,6,9)],我想找到第三列的最大数目,所以我尝试了:

zipped = zip(*list)
print max(zipped[2])

但并没有显示出最大的数字。有人知道原因和解决办法吗?


Tags: 列表原因数字zipmaxlistprint数目
2条回答

在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

这里的关键是,它允许您获得最大的完整元组(最大的元组由第三个元素决定),然后如果需要的话,只需从中拉出正确的元素。

适用于所有较新的Python:

>>> 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

相关问题 更多 >

    热门问题