首页 > 解决方案 > 我的代码返回“命令 '['python3']' 2 秒后超时”

问题描述

请帮我解决以下问题:

目前我有:

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

有人能告诉我为什么我看到“命令 '['python3']' 在 2 秒后超时”吗?提前致谢!

标签: python

解决方案


因为在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为 afor并从末尾循环列表以返回最后一次出现。哦,不要说出你的名单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]

推荐阅读