我有包含替换的列表,我想做两件事:
我想我可以使用2的过滤器而不是使用set来实现1
之类的东西list(set(filter(lambda x:x<C, l)))
有更好/更pythonic /更有效的方式吗?
答案 0 :(得分:20)
使用list comprehension可能更多&#34; pythonic&#34;。
filtered = [x for x in set(lst) if x < C]
答案 1 :(得分:6)
最好的两种方法是过滤:
new_list = list(set(filter(lambda x:x<C, l)))
或设置理解(许多人会考虑更多的pythonic,甚至更高效):
list({x for x in l if x < C})
但我想,如果你熟悉过滤器,你可以坚持下去。
答案 2 :(得分:0)
在我看来,最可能的过滤集合的方法是使用集合操作(Venn图):
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更大的值,您只需键入“ containment check”运算符“ in”,该运算符在Python代码中执行设置。包含()魔术方法(魔术方法不应该直接调用,这就是您使用“ in”的原因):
{x for x in l if x > C}