【发布时间】:2021-05-04 16:12:39
【问题描述】:
我想逐个元素地比较元组列表中的一些元组,并打印每次比较的最大值。这是我的代码:
A = [(10, 50, 1), (20, 4, 100), (11, 21, 10), (1, 42, 60), (0, 7, 74)]
indices = [1, 2]
D = (A[i] for i in indices)
for col in range(3):
print(max(D, key = lambda tpl: tpl[col])[col])
但是输出是:
20
ValueError: max() arg is an empty sequence
如果我通过物化列表D来修改生成器,使得D=[A[i] for i in indices],我得到想要的结果,即:
20
21
100
为什么在以前的实现中会出现该错误?有没有办法在不实现列表的情况下修复它?您对改进代码有什么建议吗?
谢谢
【问题讨论】:
标签: python lambda filter tuples max