我正在尝试从列表arr中删除最后5个元素,即'%20':-
arr = ['A', 't', 'u', 'l', '%20', 'K', 'r', 'i', 's', 'h', 'n', 'a', '%20', 'P', 'a', 't', 'n', 'a', '%20', 'B', 'i', 'h', 'a', 'r', '%20', 'I', 'n', 'd', 'i', 'a', '%20', '%20', '%20', '%20', '%20']
length = 30
print(length)
print(len(arr))
print(arr)
for x in range(length, len(arr)):
print(arr[x])
for x in range(length, len(arr)):
del arr[x]
print(arr)
但是我得到以下输出。我不明白为什么
print(arr[x])
可以工作,但是del arr[x]
不能:-30
35
['A', 't', 'u', 'l', '%20', 'K', 'r', 'i', 's', 'h', 'n', 'a', '%20', 'P', 'a', 't', 'n', 'a', '%20', 'B', 'i', 'h', 'a', 'r', '%20', 'I', 'n', 'd', 'i', 'a', '%20', '%20', '%20', '%20', '%20']
%20
%20
%20
%20
%20
Traceback (most recent call last):
File "test.py", line 9, in <module>
del arr[x]
IndexError: list assignment index out of range
最佳答案
索引超出范围,因为如果您从原始数组中删除项目,原始数组的大小将减小。
尝试pop()
从最后删除项目
arr = ['A', 't', 'u', 'l', '%20', 'K', 'r', 'i', 's', 'h', 'n', 'a', '%20', 'P', 'a', 't', 'n', 'a', '%20', 'B', 'i', 'h', 'a', 'r', '%20', 'I', 'n', 'd', 'i', 'a', '%20', '%20', '%20', '%20', '%20']
length = 30
print(length)
print(len(arr))
print(arr)
for x in range(length, len(arr)):
print(arr[x])
for x in range(length, len(arr)):
arr.pop()
print(arr)
关于python - 获取IndexError:列表分配索引超出python中的范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45272811/