簡體   English   中英

濾除一組的最Pythonic方法是什么?

[英]What is the most Pythonic way to filter a set?

我有包含替換的列表,我想做兩件事:

  1. 刪除重復項
  2. 按特定條件刪除所有元素,確切地說,我想刪除大於某個值的所有元素。

我想我可以使用filter for 2而不是使用set來實現1之類的東西

list(set(filter(lambda x:x<C, l)))

是否有更好/更pythonic /更有效的方式?

使用列表理解可能更“pythonic”。

filtered = [x for x in set(lst) if x < C]

最好的兩種方法是過濾:

new_list = list(set(filter(lambda x:x<C, l)))

或設置理解(許多人會考慮更多pythonic,甚至更有效):

list({x for x in l if x < C})

但我想,如果你熟悉過濾器,你可以堅持下去。

在我看來,盡管可能,過濾集的最Pythonic方法是使用set操作(維恩圖):

A = {0, 1, 4, 5, 8}; 
B = {2, 1, 3, 4, 6}; 

print("Union :", A | B) 

print("Intersection :", A & B) 

print("Difference :", A - B) 

print("Symmetric difference :", A ^ B) 

另一個例子,當您只想從集合A中刪除值5時,只需鍵入:

A - {5,}

並且在這個問題中,如果你需要過濾除C之外的更大的值,你只需在Python代碼中輸入“包含檢查”操作符“in”。 contains ()魔術方法(不應該直接調用魔術方法,這就是你使用“in”的原因):

{x for x in l if x > C}

暫無
暫無

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

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