如何修复Python中的索引器错误
只要名单上有更大的数字,我就需要再数一次。 但我不知道如何处理索引器以及它为什么会发生如何修复Python中的索引器错误,python,Python,只要名单上有更大的数字,我就需要再数一次。 但我不知道如何处理索引器以及它为什么会发生 适用于范围内的i(len(left_天)): 最大=剩余天数[0] 计数=1 del left_天[0] 如果(左)天[i]最大: 回答:追加(计数) 这就是错误所在 File "/solution_test.py", line 18, in test actual0 = solution(p0_0,p0_1) File "/solution.py", line 24, in solution
适用于范围内的i(len(left_天)):
最大=剩余天数[0]
计数=1
del left_天[0]
如果(左)天[i]最大:
回答:追加(计数)
这就是错误所在
File "/solution_test.py", line 18, in test
actual0 = solution(p0_0,p0_1)
File "/solution.py", line 24, in solution
if(left_days[i]<=largest):
IndexError: list index out of range```
文件“/solution\u test.py”,测试中的第18行
实际值0=溶液(p0\u 0,p0\u 1)
文件“/solution.py”,第24行,在解决方案中
如果(left_days[i]问题是您迭代了列表的长度,但同时删除了其中的项。在某个点上,您的迭代器将大于列表的长度。因此会出现索引器
例如,请看以下内容:
x=[0,1,2,3,4,5,6,7,8,9]
对于范围内的i(len(x)):
德尔x[i]
打印(i,x)
#输出:
0 [1, 2, 3, 4, 5, 6, 7, 8, 9]
1 [1, 3, 4, 5, 6, 7, 8, 9]
2 [1, 3, 5, 6, 7, 8, 9]
3 [1, 3, 5, 7, 8, 9]
4 [1, 3, 5, 7, 9]
索引器:列表分配索引超出范围
自从i
之后出现了indexer
现在是5
,但是您的列表只剩下5个元素。由于Python在0
开始迭代,您试图删除不存在的第6个元素。问题是您迭代了列表的长度,但同时删除了它ms。在某一点上,迭代器将大于列表长度。因此会出现索引器
例如,请看以下内容:
x=[0,1,2,3,4,5,6,7,8,9]
对于范围内的i(len(x)):
德尔x[i]
打印(i,x)
#输出:
0 [1, 2, 3, 4, 5, 6, 7, 8, 9]
1 [1, 3, 4, 5, 6, 7, 8, 9]
2 [1, 3, 5, 6, 7, 8, 9]
3 [1, 3, 5, 7, 8, 9]
4 [1, 3, 5, 7, 9]
索引器:列表分配索引超出范围
自从i
现在是5
之后出现了索引器,但是您的列表只剩下5个元素。由于Python从0开始迭代,您试图删除不存在的第6个元素。一般来说,修改您正在迭代的内容是非常糟糕的做法,尤其是如果您正在删除其内容(SO中关于此问题的示例太多,无法列出)
始终,您可以迭代列表副本以修改原始列表,也可以迭代原始列表以创建/修改副本:
left_days_1 = list(left_days)
for i in range(len(left_days_1)):
largest = left_days[0]
count = 1
del left_days[0]
if(left_days_1[i]<=largest):
count+= 1
del left_days[i]
if i == len(left_days)-1:
answer.append(count)
i = 0
elif left_days_1[i]>largest:
answer.append(count)
left\u days\u 1=列表(left\u days)
对于范围内的i(len(left_days_1)):
最大=剩余天数[0]
计数=1
del left_天[0]
如果(剩余天数)最大:
回答:追加(计数)
一般来说,修改正在迭代的内容是一种非常糟糕的做法,尤其是在删除内容的情况下(关于这个问题,SO中的示例太多,无法列出)
始终,您可以迭代列表副本以修改原始列表,也可以迭代原始列表以创建/修改副本:
left_days_1 = list(left_days)
for i in range(len(left_days_1)):
largest = left_days[0]
count = 1
del left_days[0]
if(left_days_1[i]<=largest):
count+= 1
del left_days[i]
if i == len(left_days)-1:
answer.append(count)
i = 0
elif left_days_1[i]>largest:
answer.append(count)
left\u days\u 1=列表(left\u days)
对于范围内的i(len(left_days_1)):
最大=剩余天数[0]
计数=1
del left_天[0]
如果(剩余天数)最大:
回答:追加(计数)
如果你一直从剩余天数
中删除项目,你的列表会变短,因此i
将运行到最后。i
在你开始缩短列表之前,正在迭代列表的初始长度。无论你试图做什么,这都不是方法。此外,他尝试将i重置为零,如果你继续删除,则无效从left\u days
中删除项目,您的列表将变短,因此i
将运行到末尾。i
在您开始缩短列表之前,正在迭代列表的初始长度。无论您试图做什么,这都不是方法。他还尝试将i重置为零,这没有修复任何影响Indexer,但所有其他错误都已修复rs仍然存在索引器错误已修复,但所有其他错误仍然存在