Python - 在排除空集的条件下对多个集的交集
Python - Intersection on multiple sets on the condition that empty sets are to be excluded
在排除空集(如果有)的条件下,在多个集上执行交集的最简单方法是什么?我尝试使用列表理解,但在下面的示例中,它仅在 a 不为空时才有效。
a = {1, 2, 3}
b = {1, 4, 8, 9}
c = {1, 5, 10, 15}
d = {1, 100, 200}
e = set()
MySets = [b, c, d, e]
result = a.intersection(*[s for s in MySets if s])
只要至少有一个非空集,显式调用 set.intersection
就会起作用:
result = set.intersection(*(s for s in [a, b, c, d, e] if s))
如果所有集合有可能为空,请在调用set.intersection
前检查过滤结果。赋值表达式使这更容易一些。
result = set.intersection(*non_empty) if (non_empty := list(x for x in [a, b, c, d, e] if s) else set()
在排除空集(如果有)的条件下,在多个集上执行交集的最简单方法是什么?我尝试使用列表理解,但在下面的示例中,它仅在 a 不为空时才有效。
a = {1, 2, 3}
b = {1, 4, 8, 9}
c = {1, 5, 10, 15}
d = {1, 100, 200}
e = set()
MySets = [b, c, d, e]
result = a.intersection(*[s for s in MySets if s])
只要至少有一个非空集,显式调用 set.intersection
就会起作用:
result = set.intersection(*(s for s in [a, b, c, d, e] if s))
如果所有集合有可能为空,请在调用set.intersection
前检查过滤结果。赋值表达式使这更容易一些。
result = set.intersection(*non_empty) if (non_empty := list(x for x in [a, b, c, d, e] if s) else set()