Уведомления

Группа в Telegram: @pythonsu

#1 Июль 16, 2009 11:20:09

_vladimir_
От:
Зарегистрирован: 2009-07-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Пересечение множеств

Всем здравствуйте!
Вопрос следующий. Имеется словарь множеств:

Q = {}
Q = set()
Q = set()
Q = set()
…..

требуется написать одной строкой (что-то наподобие list comprehensions) код для нахождение пересечения всех множеств. Это возможно? Ибо первый пришедший в голову способ занимает аж 6 строк



Офлайн

#2 Июль 16, 2009 12:12:50

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Пересечение множеств

reduce(lambda x, y: x.intersection(y), Q.values()[1:],Q.values()[0]) if Q else set()
PS: правда мне непонятно что должно быть результатом если в словаре один элемент



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Июль 16, 2009 12:17:57)

Офлайн

#3 Июль 16, 2009 12:17:32

_vladimir_
От:
Зарегистрирован: 2009-07-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Пересечение множеств

спасибо – это действительно просто и понятно



Офлайн

#4 Июль 16, 2009 12:40:27

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

Пересечение множеств

можно и так:

reduce(lambda x, y: x & y, Q.values()) if Q else set()



Офлайн

#5 Июль 16, 2009 17:40:02

_vladimir_
От:
Зарегистрирован: 2009-07-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Пересечение множеств

действительно этот вариант короче,
если я ошибаюсь, то поправьте:
1) выражения x & y и x.intersection(y) – это одно и то же
2) второй вариант (хотя это мелочи), но на одно действие будет выполнять больше – пересечение элемента словаря с самим собой (когда x = y).



Офлайн

#6 Июль 17, 2009 07:53:52

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

Пересечение множеств

1) Да
2) Нет



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version