str和int实例之间不支持“<”

2024-10-17 08:36:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我在试着找出一群人中得分最低的

我的代码:

list = [['Radhe',99],['Bajrangi',98],['Ram',95],['Shyam',94],['Bharat',89]]
min_score = list[0][1]
for x in list:
    for y in x:
        if (y < min_score):
            min_score=y
print(min_score)

我应该做什么不同


Tags: 代码inforifminlistramscore
3条回答

试试这个

given_list = [['Radhe',99],['Bajrangi',98],['Ram',95],['Shyam',94],['Bharat',89]]
print(min(given_list, key=lambda x: x[1])[1])

您正在迭代x的每个元素,而实际上您只关心x[1]

for x in list:
    if x[1] < min_score:
        min_score = x[1]

您还可以解压每个子列表,以使值更易于使用:

for name, score in list:
    if score < min_score:
        min_score = score
  1. list是python中的内置数据类型,因此应该将变量重命名为其他类型,例如l

  2. 在第一个for循环中,您正在执行for x in list,因此您将x分配给列表的第一个元素['Radhe', 99]。在第二个for循环中,您将遍历x中的每一项,第一项是'Radhe',因此您将int与字符串进行比较

考虑到这一点,您可以将代码重写为:

l = [['Radhe',99],['Bajrangi',98],['Ram',95],['Shyam',94],['Bharat',89]]
min_score = l[0][1]
for x in l:
    if (x[1] < min_score):
        min_score=x[1]
print(min_score)

哪些产出:

89

或者,您可以使用列表理解在一行中完成所有操作:

min_score = min([x[1] for x in l])

相关问题 更多 >