Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除列表中的某些索引_Python_Loops_Enumerate - Fatal编程技术网

Python 删除列表中的某些索引

Python 删除列表中的某些索引,python,loops,enumerate,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']] 我想删除remove中索引处的值如果执行逐步执行,问题将变得明显 删除图元时,下列图元的位置将发生更改。例

假设我有一个充满索引的列表要删除

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']]

我想删除remove

中索引处的值如果执行逐步执行,问题将变得明显

删除图元时,下列图元的位置将发生更改。例如,如果从列表中删除元素0,则原来的元素1将变成元素0


如果要坚持当前方法,只需按相反顺序遍历索引(不需要值,只需使用
范围即可)。

如果执行分步执行,问题将变得明显

删除图元时,下列图元的位置将发生更改。例如,如果从列表中删除元素0,则原来的元素1将变成元素0


如果您想坚持当前的方法,只需按相反的顺序遍历索引(您不需要这些值,只需使用
范围即可)。

如果不需要执行此操作,您可以根据索引构建新列表:

[[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']]

如果不必执行此操作,可以根据索引构建新列表:

[[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']]

如果不想理解列表,可以使用如下循环:

for x in remove[::-1]:
    for list in l:
        del list[x]
[b',d',g',i',[b',d',g',i']


如果不想理解列表,可以使用如下循环:

for x in remove[::-1]:
    for list in l:
        del list[x]
[b',d',g',i',[b',d',g',i']



当你删除元素的时候,你的索引会改变…你甚至没有想过这一点你会出错吗?像
索引器
?我的第一个猜测是,由于您从一开始就删除了元素,因此每次删除某些内容时,列表的右侧部分都会向左移动,导致您最终要删除的某些索引超出范围。解决方法是删除从最大索引开始的元素,而不是最小的。不,没有任何错误,只是一些元素没有被删除,因为经过几次删除后,它再也找不到一些更高的索引,如9、10或11。当您删除元素时,您的索引会发生变化……甚至没有想过这一点,您会出错吗?像
索引器
?我的第一个猜测是,由于您从一开始就删除了元素,因此每次删除某些内容时,列表的右侧部分都会向左移动,导致您最终要删除的某些索引超出范围。解决方法是删除从最大索引开始的元素,不是最小的。不,没有任何错误,只是一些元素没有被删除,因为经过几次删除后,它再也找不到一些更高的索引,如9、10或11。我不明白这意味着什么“按相反顺序遍历索引”@JetAlex Remove element在
11
,然后在
10
,然后在
9
,然后在
7
…我搞不懂这是什么意思“以相反的顺序遍历索引”@JetAlex在
11
删除元素,然后在
10
,然后在
9
,然后在
7
…我搞不懂这是什么意思,我从来没有学过这样的语法这是
列表理解
。构造列表是一种非常常见的方法。您可以在google上搜索列表理解python以获取更多信息。@JetAlex,您不需要使用列表理解。如果你能负担得起复制数据的费用,那么Psidom的想法是简单而好的。事先将
转换为\u remove
到一个集合可能是值得的。我很困惑这意味着什么,我从来没有学过这样的语法这是
列表理解
。构造列表是一种非常常见的方法。您可以在google上搜索列表理解python以获取更多信息。@JetAlex,您不需要使用列表理解。如果你能负担得起复制数据的费用,那么Psidom的想法是简单而好的。事先将
转换为\u remove
可能是值得的。