Как получить пересечение нескольких множеств?

167 просмотра
0
0 Комментариев

У меня есть массив, который содержит множества (set). Мне нужно получить их пересечение. Как это сделать?
Пробовал так:

l = [set([1,2,3]), set([2,3,4]), set([3,4,5])]
list(map(&, l))

Не получилось.


Добавить комментарий

2 Answers

Python Опубликовано 09.12.2018
0

l = [set([1,2,3]), set([2,3,4]), set([3,4,5])]
 
print(set.intersection(*l))
 
>>> {3}

«*» оператор — это оператор распаковки коллекции.

l = ['a', 'b', 'c', 'd', 'e', 'f']
 
print(*l)
 
a b c d e f

Суть оператора в том, что массив l превратился в 6 различных значений (был 1 список — стало 6 элементов без списка).

Ну а intersection — метод из стандатртной библиотеки.

Добавить комментарий
0

Если автору вопроса хочется именно функционального программирования, то можно так 🙂

from functools import reduce
from operator import __and__
 
l = [set([1,2,3]), set([2,3,4]), set([3,4,5])]
 
list(reduce(__and__, l))

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up