python - 我的代码返回“命令 '['python3']' 2 秒后超时”
问题描述
请帮我解决以下问题:
- 给定子列表列表:[['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]
有人能告诉我为什么我看到“命令 '['python3']' 在 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
为 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]
推荐阅读
- python - 使用 Python 进行 Web 开发的学习路径
- java - 如何制作一个简单的程序,让 Servlet 和 JSP 一起生成 HTML 文件?
- apache-spark - 在包含相同 ID 的两行之间创建另一个 ID 和不同错误的表 - SQL
- amazon-web-services - 使用 AWS(ELB、Kubernetes Nginx 和 ACM)配置 HSTS
- tensorflow2.0 - 如何用一定的权重初始化模型?
- java - 单击项目时,Recyclerview onbindview 无法正常工作
- sql-server - Linux 上的 SQL Server 2017。使用 Powershell 步骤的作业
- arrays - 我想知道为什么字符串 d 在 abcg0 之后得到 abce 因为它的大小只有 5
- mysql - 用 SQL 中的列名替换单元格值
- python - 如何在 Beautiful Soup 中获取 get_text 的位置