如何修复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仍然存在索引器错误已修复,但所有其他错误仍然存在