删除列表中的某些索引

时间:2016-12-02 00:53:01

标签: python loops enumerate

假设我有一个列表,其中包含要删除的索引

remove = [0, 2, 4, 5, 7, 9, 10, 11]

然后我有另一个列表列表,例如

l = [['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'], ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']]

我想删除删除

中索引的值

3 个答案:

答案 0 :(得分:3)

如果您不必这样做,可以根据索引构建新列表:

[[v for i, v in enumerate(s) if i not in to_remove] for s in l]
# [['b', 'd', 'g', 'i'], ['b', 'd', 'g', 'i']]

答案 1 :(得分:1)

如果您执行一步一步的执行,问题就会变得明显。

删除元素时,以下元素的位置会发生变化。例如,如果从列表中删除元素0,则元素1将成为元素0。

如果你想坚持使用当前的方法,只需按相反的顺序遍历索引(你不需要值,只需使用range)。

答案 2 :(得分:0)

If you don't want list comprehension, you can use a couple of loops like so:

for x in remove[::-1]:
    for list in l:
        del list[x]

[['b', 'd', 'g', 'i'], ['b', 'd', 'g', 'i']]