【发布时间】:2018-03-09 21:36:32
【问题描述】:
我设计了一个程序来计算列表中的一些最大元组,但是我被困在必须比较一个元组中的最大值 item[1] 并将其与另一个元组 item[1] 进行比较的地步。
这是元组列表:
fff = []
anslist = [(2, [1]), (3, [7]), (4, [2]), (5, [5]), (6, [8]), (7, [16]), (8, [3]), (9, [19]), (10, [6]), (11, [14]), (12, [9]), (13, [9]), (14, [17]), (15, [17]), (16, [4]), (17, [12]), (18, [20]), (19, [20]), (20, [7])]
这是我的代码:
print(max(anslist, key=lambda x: x[1]))
fff.append(max(anslist, key=lambda x: x[1]))
anslist.remove(max(anslist, key=lambda x: x[1]))
while (max(fff[1], key=lambda x: x[1])) == (max(anslist[1], key=lambda x: x[1])):
print(max(anslist, key=lambda x: x[1]))
anslist.remove(max(anslist, key=lambda x: x[1]))
我希望我的程序能够打印 (18, [20]) 和 (19, [20]),因为元组列表总是根据用户的输入而变化,所以我需要某种需要通过的循环所有元组,直到元组的第二项不再是最大的。
这是我得到的错误:
while (max(fff[1], key=lambda x: x[1])) == (max(anslist[1], key=lambda x: x[1])):
IndexError: list index out of range
【问题讨论】:
-
我已将您的问题编辑得更好一些,但请edit 它包括您的代码尝试如何无法解决问题。给出真实的输出——“不工作”是完全无用的信息。
-
与您的问题无关的快速提示:当您发现自己多次传递相同的
lambda时,请将其分配给一个变量并改为传递该变量。这种方法的一个好处是,如果您想修改lambda的工作方式,您只需在一个地方进行更改。
标签: python math lambda tuples list-comprehension