亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從另一個列表中刪除所有出現在列表中的元素

從另一個列表中刪除所有出現在列表中的元素

叮當貓咪 2019-06-20 17:26:55
從另一個列表中刪除所有出現在列表中的元素假設我有兩份名單,l1和l2..我想表演l1 - l2的所有元素。l1不在l2.我可以想到一種簡單的循環方法來實現這一點,但這將是非常低效率的。什么是節奏曲和有效的方式來做到這一點?舉個例子,如果我有l1 = [1,2,6,8] and l2 = [2,3,5,8], l1 - l2應該回來[1,6]
查看完整描述

3 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

Python有一個名為清單理解這非常適合讓這類事情變得非常容易。下面的語句完全按照您的要求執行,并將結果存儲在l3:

l3 = [x for x in l1 if x not in l2]

l3將包含[1, 6].

希望這能幫上忙!


查看完整回答
反對 回復 2019-06-20
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

一種方法是使用集合:

>>> set([1,2,6,8]) - set([2,3,5,8])set([1, 6])


查看完整回答
反對 回復 2019-06-20
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

您可以通過使用生成器理解而不是列表理解來獲得更好的結果,并使用set數據結構(因為in運算符在列表上是O(N),而在集合上是O(1)。

所以這里有一個對你有用的函數:

def?filter_list(full_list,?excludes):
????s?=?set(excludes)
????return?(x?for?x?in?full_list?if?x?not?in?s)

結果將是一個可迭代的,它將懶洋洋地獲取篩選的列表。如果您需要一個真正的列表對象(例如,如果您需要執行len()),然后您就可以輕松地構建如下所示的列表:

filtered_list?=?list(filter_list(full_list,?excludes))


查看完整回答
反對 回復 2019-06-20
  • 3 回答
  • 0 關注
  • 4914 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號