尝试打印列表中第二大的数字

时间:2018-07-18 21:46:47

标签: python python-3.x list

x = input()
y = map(int, input().split())
score = list(y)
score2 = score.remove(max(score))
print(max(score2))

当我使用输入x = 4和y = 1 2 3 4执行上述代码时,它显示一条错误消息“ NoneType值不可迭代”。最后但前一行'score2 = score.remove(max(score))'返回None值。为什么会这样?我打算创建获取列表中第二大数字的代码

2 个答案:

答案 0 :(得分:2)

remove()中的方法list不返回任何内容。它就地更改列表。因此,您的score2值将始终为None

校正后的程序应该看起来像(很少进行外观校正,将适用于2个或更高值的输入):

score = sorted(map(int, input().split()))[-2]
print(score)

答案 1 :(得分:0)

您为什么不做-

y=[1, 2, 3, 4]
max_num = max(y)
print(max(num for num in y if num!=max_num))