[英]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.