Python 从列表中删除元素列表

Python 从列表中删除元素列表,python,list,Python,List,假设我有两个列表listBig和listmall,我想从listBig中删除listmall的所有元素。假设listSmall的所有元素都存在于listBig中,并且如果listSmall中有多个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(li

假设我有两个列表
listBig
listmall
,我想从
listBig
中删除
listmall
的所有元素。假设
listSmall
的所有元素都存在于
listBig
中,并且如果
listSmall
中有多个
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]

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

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

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

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

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

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

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

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

尝试:

尝试:

尝试:


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

>>>'listBig[:]=[如果元素不在listSmall中,则listBig中的元素对应listBig中的元素]
>>打印列表大


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

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

>>>'listBig[:]=[如果元素不在listSmall中,则listBig中的元素对应listBig中的元素]
>>打印列表大


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

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

>>>'listBig[:]=[如果元素不在listSmall中,则listBig中的元素对应listBig中的元素]
>>打印列表大


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

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

>>>'listBig[:]=[如果元素不在listSmall中,则listBig中的元素对应listBig中的元素]
>>打印列表大


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

如果不想删除重复项,请列出。删除(x)仅删除它在列表中找到的第一个元素

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

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

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

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

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

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

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


如果将listSmall更改为set(),如果listSmall是一个长列表,并且listSmall中没有重复的元素,则效果会更好。因为中的
在常量时间中对set()起作用,而在list@Cyber中对线性时间起作用@user1989682@ChesterL我不太明白你的意思。正如您所说,
中的
操作对于
set
比对于
list
更快。对于任何大小合适的
列表small
,制作
集合将非常有益。谢谢。很抱歉造成了一些混乱。我意识到,在我的例子中,如果listBig中有listSmall元素多次出现,则不能删除它们。我将编辑该问题。@只要listSmall中没有重复的元素,否则,set()将只保留一个左边。请检查修改后的问题。如果将listSmall更改为set(),如果listSmall是一个长列表,并且listSmall中没有重复的元素,可能会更好。因为
中的
在常量时间中对set()起作用,而在list@Cyber中对线性时间起作用@user1989682@ChesterL我不太明白你的意思。正如您所说,
中的
操作对于
set
比对于
list
更快。对于任何大小合适的
列表small
,制作
集合将非常有益。谢谢。很抱歉造成了一些混乱。我意识到,在我的例子中,如果listBig中有listSmall元素多次出现,则不能删除它们。我将编辑该问题。@只要listSmall中没有重复的元素,否则,set()将只保留一个左边。请检查修改后的问题。如果将listSmall更改为set(),如果listSmall是一个长列表,并且listSmall中没有重复的元素,可能会更好。因为
中的
在常量时间中对set()起作用,而在list@Cyber中对线性时间起作用@user1989682@ChesterL我不太明白你的意思。正如您所说,
中的
操作对于
set
比对于
list
更快。对于任何大小合适的
列表small
,制作
集合将非常有益。谢谢。很抱歉造成了一些混乱。我意识到,在我的例子中,如果listBig中有listSmall元素多次出现,则不能删除它们。我将编辑该问题。@只要listSmall中没有重复的元素,否则,set()将只保留一个左边。请检查修改后的问题。如果将listSmall更改为set(),如果listSmall是一个长列表,并且listSmall中没有重复的元素,可能会更好。因为
中的
在常量时间中对set()起作用,而在list@Cyber中对线性时间起作用@user1989682@ChesterL我不太明白你的意思。正如您所说,
中的
操作对于
set
比对于
list
更快。对于任何大小合适的
列表small
,制作
集合将非常有益。谢谢。我很抱歉造成这样的后果