簡體   English   中英

如何遍歷列表以刪除項目索引?

[英]How to iterate over a list to remove index of item?

我有2個清單:

l1=[(1,2),(3,4),(5,6)]
l2 = [0,2]

L2包含索引列表。 我想刪除l1中與l2中的索引相對應的元素的索引。

那怎么辦?

for i in l2:
    l2.pop(i)

不起作用,因為在彈出第一個索引后索引會更改。

我在某處看到了此答案,但通過刪除索引無法正常工作:

somelist = [x for x in somelist if not determine(x)]
l2 = set(l2)   # for speedy lookups
l1 = [x for i, x in enumerate(l1) if i not in l2]

您始終可以先對索引列表進行排序,然后反向進行索引遍歷,以確保刪除正確的值

for i in sorted(l2)[::-1]: l1.pop(i)

您可以按照相反的順序來避免該問題:

l1 = [(1, 2), (3, 4), (5, 6)]
l2 = [0, 2]

for i in reversed(l2):
    del l1[i]
print l1 # [(3, 4)]

暫無
暫無

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

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