[英]Delete list of elements from a list
假設我有兩個列表listBig
和listSmall
,我想從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.