删除for循环中列表的元素

时间:2017-05-07 13:49:20

标签: list index-error

所以,这是我的问题。根据条件,我试图浏览嵌套列表并删除一些元素。问题在于,每当删除一个元素时,这会改变列表的长度,从而产生错误:

IndexError: list index out of range

这是我的代码:

a = [[[1] * 2 for i in range(n)] for j in range(p)]
     for y in range(p):
        for x in range(n):
            if len(a[y]) > 1:
                if a[y][x][1] == 1:
                    if random.random() < s:
                        del a[y][x]

s只是介于0和1之间的数字。因为我想确保每个列表至少有1个值,我将if len(a [y])&gt; 1部分。我想我能理解这个问题,问题是列表的长度在变化,因此位置也会发生变化。有没有人知道克服这个问题的简单方法?

1 个答案:

答案 0 :(得分:0)

你需要像

这样的东西
  

继续;

  

中断;

语句(例如在Java中)将停止循环并阻止它计数太多。

所以你只能删除每个内循环中的一个元素。休息之后;或继续;您可以使用新的列表长度再次遍历列表,以便在必要时删除第二个,第三个..元素。