Python组合生成

标签 python python-2.7 python-2.x

我是编程和 Python 的新手。不确定如何继续解决这个(在下面解释)问题,因此这个问题。

我有 n 个列表,每个列表包含 1 个或多个项目。我想要一个包含所有可能组合的新列表,它使用每个列表中的一个项目一次,并且始终如此。

例子:

list_1 = ['1','2','3']
list_2 = ['2','5','7']
list_3 = ['9','9','8']

结果将是:['129', '129', '128', '159', '159', '158', '179', '179', '178', '229' , '229', '228', '259', '259', '258', '329', '329', '328', '359', '359', '358', '379', ' 379', '378']

这里的示例有 3 个列表,每个列表包含 3 个项目,但可以有任意 n 个列表,每个列表包含任意 m 个元素(因此并非所有列表都需要具有相同数量的元素)。

列表的所有元素都是字符串,输出列表也包含字符串。

我该怎么办?

我查看了 itertools.combinations,但我不知道如何使用它来完成这项任务。

最佳答案

使用itertools.product()这里:

>>> list_1 = ['1','2','3']
>>> list_2 = ['2','5','7']
>>> list_3 = ['9','9','8']
>>> from itertools import product
>>> ["".join(x) for x in product(list_1,list_2,list_3)]
['129', '129', '128', '159', '159', '158', '179', '179', '178', '229', '229', '228', '259', '259', '258', '279', '279', '278', '329', '329', '328', '359', '359', '358', '379', '379', '378']

关于Python组合生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13129454/

相关文章:

python - 当我有一个列表元组对象时如何合并键的值

python - 如何将自定义列顺序(在分类上)应用于 Pandas 箱线图?

python - 从ndb python通过urlsafe key查询记录

python - "Fatal Python error: Couldn' t 使用 CherryPy 创建 autoTLSkey 映射

python - 如何使用 img2pdf 作为模块

python - 无法使用 --workers 选项运行 Odoo

python - 检查执行 python 3.5 mysql.connecter 生成的SQL语句

python - 将嵌套字典转换为多级数据帧

Python 用当前时间戳重命名相对路径

python - 类不识别属性?