Форум сайта python.su
Всем здравствуйте!
Вопрос следующий. Имеется словарь множеств:
Q = {}
Q = set()
Q = set()
Q = set()
…..
требуется написать одной строкой (что-то наподобие list comprehensions) код для нахождение пересечения всех множеств. Это возможно? Ибо первый пришедший в голову способ занимает аж 6 строк
Офлайн
reduce(lambda x, y: x.intersection(y), Q.values()[1:],Q.values()[0]) if Q else set()
Отредактировано (Июль 16, 2009 12:17:57)
Офлайн
спасибо – это действительно просто и понятно
Офлайн
можно и так:
reduce(lambda x, y: x & y, Q.values()) if Q else set()
Офлайн
действительно этот вариант короче,
если я ошибаюсь, то поправьте:
1) выражения x & y и x.intersection(y) – это одно и то же
2) второй вариант (хотя это мелочи), но на одно действие будет выполнять больше – пересечение элемента словаря с самим собой (когда x = y).
Офлайн
1) Да
2) Нет
Офлайн