如何有效地连接阵列数组中的所有可能性?

时间:2014-11-13 04:41:23

标签: python arrays

["Hey", ["What's Up", "John", "Good Evening"], "Smith"]

在python中使用这个数组结构,如何创建所有可能的句子?嘿什么是史密斯/嘿约翰史密斯/嘿晚安史密斯。我一直在试图解决这个问题,但是现在我的大脑太过于油腻,无法想到适当的递归/技术。提前谢谢!

1 个答案:

答案 0 :(得分:2)

它需要对输入列表进行一些标准化,以便它是一个列表列表,而不是(字符串和列表)列表。然后使用itertools

很容易
>>> w = [["Hey"], ["What's Up", "John", "Good Evening"], ["Smith"]]

>>> list(itertools.product(*w))
[('Hey', "What's Up", 'Smith'),
 ('Hey', 'John', 'Smith'),
 ('Hey', 'Good Evening', 'Smith')]

>>> map(' '.join, list(itertools.product(*w)))
["Hey What's Up Smith", 'Hey John Smith', 'Hey Good Evening Smith']