我有一个算法生成的列表:
L1 = [1, 2]
我有第二个清单:
L2 = [10, 20, 30, 40, 50]
如何通过L2
值的索引删除L1
中的元素?
这是我的代码无效:
L1 = [1, 2]
L2 = [10, 20, 30, 40, 50]
for i in L1:
for k,v in enumerate(L2):
if i == k:
L2.remove(v)
答案 0 :(得分:3)
高效:
>>> for i in sorted(L1, reverse=True):
... L2.pop(i)
答案 1 :(得分:1)
如果列表不是特别大,您可以使用列表解析构建新列表:
>>> L1 = [1, 2]
>>> L2 = [10, 20, 30, 40, 50]
>>> S1 = set(L1)
>>> [el for i, el in enumerate(L2) if i not in S1]
[10, 40, 50]
答案 2 :(得分:0)
建立新名单:
In[9]: L1 = [1,2]
L2 = [10,20,30,40,50]
In[10]: [x for i,x in enumerate(L2) if i not in L1]
Out[10]: [10, 40, 50]
答案 3 :(得分:0)
你可以这样做:
L1 = [1,2]
L2 = [10,20,30,40,50]
L2 = [x for x in L2 if L2.index(x) not in L1]
输出:
[10, 40, 50]