繁体   English   中英

从另一个列表值中按索引删除列表元素

[英]Delete list element by index from another list value

我有一个算法生成的列表:

L1 = [1, 2]

我还有第二个清单:

L2 = [10, 20, 30, 40, 50]

如何通过L1值中的索引删除L2的元素?

这是我的代码不起作用:

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)

高效:

>>> for i in sorted(L1, reverse=True):
...     L2.pop(i)

如果列表不是特别大,则可以使用列表理解来构建新列表:

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

建立新清单:

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]

您可以这样做:

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM