如何从多个列表中删除多个列表?

2024-06-02 05:10:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个清单:

l1 = [[1,2,3,4,5], [1,2,4,6,7]]
l2 = [[1,2,3,4,5], [1,2,4,6,7], [1,2,3,6,8], [1,2,3,0,9], [1,2,6,7,6]]

我想创建一个新列表l3,其中包含l2中不在l1中的项。像这样:

^{pr2}$

因此,我希望l3为:

l3 = [[1,2,3,6,8], [1,2,3,0,9], [1,2,6,7,6]]

我怎么才能做到呢? 在python中有没有使用remove()或delete()的解决方案。。?在


Tags: l1列表解决方案deleteremovel3l2pr2
3条回答

为O(1)成员资格测试构建一组元组。(在您的小例子中,这是不必要的,但我假设是大列表)然后通过列表理解进行过滤。在

>>> checker = set(map(tuple, l1))
>>> [l for l in l2 if tuple(l) not in checker]
[[1, 2, 3, 6, 8], [1, 2, 3, 0, 9], [1, 2, 6, 7, 6]]

就这么做吧:

l3 = [lst for lst in l2 if lst not in l1]

如果要删除l2中的l2子列表,并用其余的子列表创建一个新列表,请尝试以下操作:

l1 = [[1,2,3,4,5], [1,2,4,6,7]]
l2 = [[1,2,3,4,5], [1,2,4,6,7], [1,2,3,6,8], [1,2,3,0,9], [1,2,6,7,6]]

for sub in l1:
    if sub in l2:
        l2.remove(sub)

l3 = l2[:]

>>> l1
[[1, 2, 3, 4, 5], [1, 2, 4, 6, 7]]
>>> l2
[[1, 2, 3, 6, 8], [1, 2, 3, 0, 9], [1, 2, 6, 7, 6]]
>>> l3
[[1, 2, 3, 6, 8], [1, 2, 3, 0, 9], [1, 2, 6, 7, 6]]

相关问题 更多 >