簡體   English   中英

從列表中刪除元素列表

[英]Delete list of elements from a list

假設我有兩個列表listBiglistSmall ,我想從listBig刪除listSmall所有元素。 假定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]

嘗試:

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

我會將您的listSmall轉換為一個set (以便更快地查找成員資格),那么您可以使用簡單的列表listSmall

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

您可以使用列表推導比較兩個列表中的每個元素,並檢查是否有重復的元素。 如果是這樣,重復的元素將從listBig中刪除。

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

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

如果您不想刪除重復項,則list.remove(x)僅刪除它在列表中找到的第一個元素。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM