分配给变量列表索引时超出范围?

时间:2019-03-05 19:41:46

标签: python python-3.x

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]表示列表索引超出范围的行中有错误。

2 个答案:

答案 0 :(得分:0)

问题可能出在线路上

for i in (0,len(lis)):

列表从零开始,因此有效索引从0len(lis) - 1len(lis)确实超出范围。

此外,请注意,上面的代码行意味着i将仅接收2个值-0len(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!