繁体   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