n = int(input())
numb = input()
lis = list(map(int, numb.split()))
lis.sort()
a = lis[n]
for i in (0,len(lis)):
if lis[i]=[a]
print (lis[i-1])
我尝试了此操作,当我输入5的n和lis的输入为24689时,它说a = lis [n]表示列表索引超出范围的行中有错误。
答案 0 :(得分:0)
问题可能出在线路上
for i in (0,len(lis)):
列表从零开始,因此有效索引从0
到len(lis) - 1
。 len(lis)
确实超出范围。
此外,请注意,上面的代码行意味着i
将仅接收2个值-0
和len(lis)
。那是真的吗如果您打算遍历所有索引,则需要做
for i in range(len(lis)):
range(n)
是一个迭代器,可将值从0
返回到n - 1
。
答案 1 :(得分:0)
此代码存在几个问题。首先,您需要将for语句更改为for i in range(0, len(lis))
,因为您当前未调用range函数。
此外,在第一次迭代时,它将尝试访问索引-1,它是列表中的最后一个元素。更好的主意是将范围函数更改为range(0, len(lis) - 1)
,并将最后一行的print语句更改为print(lis[i])
,以解决使用索引-1接收最后一个元素的问题。
P.S。欢迎使用Stack Overflow!