For循环,嵌入if语句列表索引超出范围

时间:2015-07-23 12:05:12

标签: python html django

我有以下python代码:

raw_list = reminders_context['data']['reminder_list']

此声明正常工作并获取我想要的所需信息。

下面的代码给出了错误列表索引超出范围但是for循环的内部工作原理,例如。[我显然用'i'代替数字,然后得到列表项的前10个字符[:10]],在pdb模式下设置跟踪时工作正常。

raw_list[i]['created'][:10] == raw_list[i + 1]['created'][:10]

出错的代码:

for i in range(len(raw_list)):
    if raw_list[i]['created'][:10] == raw_list[i + 1]['created'][:10]:
        del raw_list[i + 1]
    else:
        pass

如何更改它以便我不会收到错误?

我已经看到了迭代时我的列表在for循环中如何减少的一些内容,但我根本不知道如何在我的代码中实现它。

我所指的文章就在这里:

python : list index out of range error

2 个答案:

答案 0 :(得分:0)

如何改变:

for i in range(len(raw_list)):

进入:

for i in range(len(raw_list)-1):

答案 1 :(得分:0)

range(n)从0变为n-1。在这种情况下,n-1是列表中的最后一个有效索引。当循环处于迭代i = len(raw_list)-1(最后一次迭代)时,访问i+1元素的操作会尝试访问len(raw_list),这不是数组中的有效索引。因此,循环可以执行的最后一次有效迭代是i=len(rawlist)-2

基本上,你需要让你的for循环少做一次迭代。