2014-12-11 2 views
0

Вход:itertools продукт для получения всех возможных строк размера 3. Python

pos_1= 'AVNMHDRW' 
pos_2= 'KNTHDYBW' 
pos_3= 'KVNGSDRB' 

Пытаясь найти все возможные триплеты, используя один элемент из pos_1, один из pos_2, и один из pos_3

Я m пытается выяснить, как использовать itertools.product (*), но я немного смущен

В конечном счете, я хочу создать список (или объект-генератор) всех различных возможностей, взяв один из pos_1, затем один из pos_2, а затем один из pos_3

Пример вывода:

'AKK','ANV','WWB' 

pos_1 обозначает положение одной и так далее для pos_2 и pos_3.

+0

Не уверен, почему продукт вам, но вы можете сделать генератор просто 'г = ([v1, v2, v3] для v1 в pos_1 для v2 в pos_2 для v3 в pos_3)' – Marcin

ответ

1

Простой:

itertools.product(pos_1, pos_2, pos_3) 

Это может повторяться в течение; если вам нужен список, просто передайте его list.

В чем именно проблема?

Редактировать: Это создает кортежи предметов из каждого источника. Если вы хотите присоединиться к ним обратно в строки, вы можете сделать это вручную, когда вы итерацию:

for a, b, c in itertools.product(pos_1, pos_2, pos_3): 
    do_something_with(a + b + c) 

или для создания списка, вы можете использовать список понимание:

[a + b + c for a, b, c in itertools.product(pos_1, pos_2, pos_3)] 
+0

Или для удовольствия, ' map (''. join, itertools.product (pos_1, pos_2, pos_3)) ' –

0

Вы можете сделать такое используя выражение генератора генератора:

g = (v1+v2+v3 for v1 in pos_1 for v2 in pos_2 for v3 in pos_3)