簡體   English   中英

刪除列表中的某些索引

[英]Remove certain indexes in a list

假設我有一個要刪除的索引列表

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中索引處的值

如果不必就地執行此操作,則可以根據索引構造新列表:

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

如果逐步執行,問題將變得很明顯。

刪除元素時,以下元素的位置會發生變化。 例如,如果從列表中刪除元素0,則元素1原來是元素0。

如果您想使用當前方法,只需以相反的順序遍歷索引(不需要值,只需使用range )。

如果您不希望列表理解,可以使用幾個循環,如下所示:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM