我的代码返回"Command '['python3']' timed out after 2 seconds"



请帮我做以下事情:

  • 给出一个子列表:[['a',3],['b',5],['c',5]、['d',4]]
  • 目标是返回附加了最高值的信件
  • 如果出现平局,则返回后者(在上面的列表中,应返回"c"(

目前我有:

nums = []
for i in list:
nums.append(i[1])
while i in list:
if max(nums) == i[1]:
return i[0]

有人能告诉我为什么我看到"命令'['ython3']'在2秒钟后超时"吗?提前感谢!

因为在for循环结束时,i等于['d', 4]。现在你在做while i in list,也就是True。自从i[1] == 4 != 5 == max(nums)以来,我的先生,你有一个无限的循环。


另一种方法是使用内置的max函数和服装key来比较第二个元素。然后,为了得到字母,我们将取结果的第一个元素。由于您想返回最后一次出现,我们将检查反向列表(max返回第一次出现(:

from operator import itemgetter
a = [['a', 3], ['b', 5], ['c', 5], ['d', 4]]
print(max(reversed(a), key=itemgetter(1))[0])

给出:c


按照您最初的思路,首先您可能希望将max值保存在变量中,因为每次调用max时都会再次循环列表。然后,将while更改为for,并从末尾循环列表以返回最后一次出现的内容。哦,不要把你的名单命名为list

def find_max_letter(a):
nums = []
for i in a:
nums.append(i[1])
# you can also create this with list-comprehension: nums = [i[1] for i in list]
max_num = max(nums)
for i in a[::-1]:
if max_num == i[1]:
return i[0]

相关内容

最新更新