Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 7, 2009 17:19:27

KW
От:
Зарегистрирован: 2009-11-06
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Хеши в Python

Есть хеш вида:

h={}
h[1] = [1, 2, 8, 3] # <--- список
h[2] = [4, 11, 8]
#...
h['abc'] = [8, 3, 9, 1, 4]
#...
Из каждого такого списка берется по одному элементу. Количество ключей хеша и длины списков произвольные. Как перебрать все комбинации таких элементов?
Например:
1, 4,..., 8
1, 4,..., 3
1, 4,..., 9
...
3, 8,..., 4



Офлайн

#2 Ноя. 7, 2009 18:06:10

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Хеши в Python

Например так:

>>> from itertools import product

>>> h={}
>>> h[1] = [1, 2, 8, 3]
>>> h[2] = [4, 11, 8]
>>> h['abc'] = [8, 3, 9, 1, 4]
>>> list(product(*h.values()))
[(1, 4, 8),
(1, 4, 3),
(1, 4, 9),
(1, 4, 1),
(1, 4, 4),
(1, 11, 8),
(1, 11, 3),
(1, 11, 9),
(1, 11, 1),
(1, 11, 4),
(1, 8, 8),
(1, 8, 3),
(1, 8, 9),
(1, 8, 1),
(1, 8, 4),
(2, 4, 8),
(2, 4, 3),
(2, 4, 9),
(2, 4, 1),
(2, 4, 4),
(2, 11, 8),
(2, 11, 3),
(2, 11, 9),
(2, 11, 1),
(2, 11, 4),
(2, 8, 8),
(2, 8, 3),
(2, 8, 9),
(2, 8, 1),
(2, 8, 4),
(8, 4, 8),
(8, 4, 3),
(8, 4, 9),
(8, 4, 1),
(8, 4, 4),
(8, 11, 8),
(8, 11, 3),
(8, 11, 9),
(8, 11, 1),
(8, 11, 4),
(8, 8, 8),
(8, 8, 3),
(8, 8, 9),
(8, 8, 1),
(8, 8, 4),
(3, 4, 8),
(3, 4, 3),
(3, 4, 9),
(3, 4, 1),
(3, 4, 4),
(3, 11, 8),
(3, 11, 3),
(3, 11, 9),
(3, 11, 1),
(3, 11, 4),
(3, 8, 8),
(3, 8, 3),
(3, 8, 9),
(3, 8, 1),
(3, 8, 4)]
Причем тут сами хеши непонятно.



Офлайн

#3 Ноя. 7, 2009 18:15:28

KW
От:
Зарегистрирован: 2009-11-06
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Хеши в Python

Спасибо. То что нужно + в документации по product можно посмотреть, как он мог бы быть реализован на Питоне. Да, тему выбрал не совсем удачно.
http://docs.python.org/library/itertools.html#itertools.product



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version