从列表中删除元素的列表

2024-05-13 12:26:10 发布

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

假设我有两个列表listBiglistSmall,我想从listBig中删除listSmall的所有元素。假设listSmall的所有元素都存在于listBig中,并且如果listBig中有一个listSmall元素的多个实例,则它们不能被删除,这意味着删除一个是关键。你知道吗

有没有比以下更好的方法来实现这一点:

listBig = [1,2,3,4,5,6,7,8,4,7]
listSmall = [4,7]
deleted = 0
inner = 0
for outer in range(0,len(listSmall)):
    while not deleted == len(listSmall):
        if listSmall[outer]==listBig[inner]:
            listBig.remove(listBig[inner])
            inner=0
            deleted+=1
            break
        inner+=1
print listBig

OUTPUT: [1, 2, 3, 5, 6, 8, 4, 7]

Tags: 实例方法in元素列表forlenrange
3条回答

尝试:

listBig = [item for item in listBig if item not in listSmall]

如果你不想删除复制品,列表.删除(x) 只删除它在列表中找到的第一个元素。你知道吗

    listBig = [1,2,3,4,5,6,7,8,4,7]
    listSmall = [4,7]
    for item in listSmall: listBig.remove(item)

我会将您的listSmall转换为set(为了更快地查找成员),然后您可以使用一个简单的列表理解

>>> setSmall = set(listSmall)
>>> listBig = [i for i in listBig if i not in setSmall]
>>> listBig
[1, 2, 3, 5, 6, 8]

相关问题 更多 >