我知道这是一个新手问题,但我不断收到通常不会收到的错误。 “索引错误:第 12 行的列表索引超出范围。”其中写着 2 个“nums”。我认为在循环之外调用变量完全没问题吗?
lisp = []
new = []
for x in range(1, 11):
num = int((x * (3*x - 1))/2)
lisp.append(num)
x = 0
y = 2
for i in lisp[1:]:
num1 = lisp[x] + i
num2 = lisp[y] + i
dif1 = i - lisp[x]
dif2 = lisp[y] - i
smallList = [num1, num2, dif1, dif2]
new.append(smallList)
x += 1
y += 1
print(new)
最佳答案
使用ipython
修复。
脚本.py:
lisp = []
new = []
for x in range(1, 11):
num = int((x * (3*x - 1))/2)
lisp.append(num)
x = 0
y = 2
for i in lisp[1:]:
num1 = lisp[x] + i
num2 = lisp[y] + i
dif1 = i - lisp[x]
dif2 = lisp[y] - i
smallList = [num1, num2, dif1, dif2]
new.append(smallList)
x += 1
y += 1
print(new)
启动ipython
并执行以下操作:
In [1]: run script.py
11 for i in lisp[1:]:
12 num1 = lisp[x] + i
---> 13 num2 = lisp[y] + i
14 dif1 = i - lisp[x]
15 dif2 = lisp[y] - i
IndexError: list index out of range
In [2]: y
Out[2]: 10
In [3]: len(lisp)
Out[3]: 10
这里y = 10
,但是len(lisp) = 10
有效索引在0
和9
之间(均包含在内,从 0 开始)并且 10 超出此范围。
关于Python错误列表索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44756009/