从列表中删除元素列表

时间:2014-11-25 21:31:42

标签: python list

假设我有两个列表listBiglistSmall,我想从listSmall中删除listBig的所有元素。假设listSmall中存在listBig的所有元素,如果listSmall中有listBig元素的多个实例,则 被删除,意味着删除一个是关键。

是否有更好的方法来实现这一目标:

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]

4 个答案:

答案 0 :(得分:2)

尝试:

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

答案 1 :(得分:1)

我会将您的listSmall转换为set(以便更快地进行会员资格查找),然后您可以使用简单的列表理解

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

答案 2 :(得分:0)

您可以使用列表推导来比较两个列表中的每个元素,并检查是否有任何重复的元素。如果是这样,重复的元素将从listBig中删除

>>>'listBig[:] = [element for element in listBig if element not in listSmall] >>>print listBig

[1, 2, 3, 5, 6, 8]

答案 3 :(得分:0)

如果您不想删除重复项,list.remove(x)只会删除它在列表中找到的第一个元素。

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