Python - пересечение нескольких множеств при условии исключения пустых множеств - PullRequest
0 голосов
/ 13 марта 2020

Какой самый простой способ в Python выполнить пересечение нескольких множеств при условии, что пустые множества, если таковые имеются, должны быть исключены? Я попытался использовать понимание списка, но в приведенном ниже примере это работает, только если 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])

1 Ответ

1 голос
/ 13 марта 2020

Вызов 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()
...