Python 分配给变量列表索引时超出范围?
我尝试了这个方法,当我为n输入input of 5,lis为24689时,它表示在a=lis[n]的行中有一个错误,表示列表索引超出范围。问题可能出在该行上Python 分配给变量列表索引时超出范围?,python,python-3.x,Python,Python 3.x,我尝试了这个方法,当我为n输入input of 5,lis为24689时,它表示在a=lis[n]的行中有一个错误,表示列表索引超出范围。问题可能出在该行上 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]) 列表以零为基础,因此有效索引从
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])
列表以零为基础,因此有效索引从0
到len(lis)-1
len(lis)
确实超出范围
另外,请注意,上面的代码行表示i
将只接收2个值-0
和len(lis)
。这就是你真正的意思吗?如果你想检查所有的索引,你需要
for i in (0,len(lis)):
range(n)
是一个迭代器,它返回从0
到n-1
的值。此代码有几个问题。首先,您需要将for语句更改为for i in range(0,len(lis))
,因为您当前没有调用range函数
此外,在第一次迭代中,它将尝试访问索引-1,这是列表中的最后一个元素。更好的方法是将范围函数更改为range(0,len(lis)-1)
,并将最后一行的print语句更改为print(lis[i])
,以解决使用索引-1接收最后一个元素的问题
另外,欢迎来到Stack Overflow python索引从0开始。包含5个元素的列表只有从0到4的索引。当
i=0
时,对于lis[i-1]
您认为它应该是什么?a=lis[n]
中还有一个错误。尝试学习Python中的索引
for i in range(len(lis)):