生成所有可能的字符串组合

时间:2017-05-16 23:08:25

标签: python python-3.x itertools

我正在尝试打印两个字符串的所有组合。

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 个答案:

答案 0 :(得分: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 - 循环而不是列表理解:

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

答案 1 :(得分:1)

您可以使用列表理解来完成此操作。如果这是练习的结束,这是有效的。如果您希望在某些时候添加另一个单词列表,那么您将需要一个不同的方法。

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

答案 2 :(得分:1)

您可以使用两个for循环,例如:

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