Сформировать все возможные комбинации строк

Обновить

November 2018

Просмотры

138 раз

2

Я пытаюсь напечатать все комбинации двух строк.

attributes = "old green".split()
persons = "car bike".split() 

Что я ожидаю:

old car
old bike
green car
green bike

То, что я пытался до сих пор:

from itertools import product

attributes = "old green".split()
persons = "car bike".split() 

print([list(zip(attributes, p)) for p in product(persons,repeat=1)]) 

3 ответы

1

Вы можете сделать это с помощью списка понимания. Это работает, если это конец упражнения. Если вы надеетесь на какой-то момент, чтобы добавить еще один список слов, то вам нужен другой метод.

[elem + ' ' + elem2 for elem in attributes for elem2 in persons]
2

Вы должны пройти persons и attributes в product:

>>> [p for p in product(attributes, persons)]
[('old', 'car'), ('old', 'bike'), ('green', 'car'), ('green', 'bike')]

а затем объединить эти строки:

>>> [' '.join(p) for p in product(attributes, persons)]
['old car', 'old bike', 'green car', 'green bike']

В случае , если вы хотите печатать их по отдельности вы можете использовать for-loop вместо списка понимания:

for p in product(attributes, persons):
    print(' '.join(p))
1

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

attributes = ['old', 'green']
persons = ['car', 'bike']
for x in attributes:
    for y in persons:
        print x, y

выход:

old car
old bike
green car
green bike