2024-09-30 04:31:16 发布
网友
我有一个列表,list = [(1,2,5), (2,8,7),(3,6,9)],我想找到第三列的最大数目,所以我尝试了:
list = [(1,2,5), (2,8,7),(3,6,9)]
zipped = zip(*list) print max(zipped[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:
itemgetter
from operator import itemgetter max(l,key=itemgetter(2))[2]
在内存方面,这可能更有效,它将在python3.x上工作,其中zip不再返回list。
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
在Python2.7上为我工作。
另一种选择:
或者如果您喜欢
itemgetter
:在内存方面,这可能更有效,它将在python3.x上工作,其中
zip
不再返回list
。这里的关键是,它允许您获得最大的完整元组(最大的元组由第三个元素决定),然后如果需要的话,只需从中拉出正确的元素。
适用于所有较新的Python:
如果您有文本:
即使源是迭代器/生成器,也可以工作。在Py3.3上,zip返回一个迭代器:
相关问题 更多 >
编程相关推荐