python - 使用列表的一个或所有元素的所有可能排列填充列表
问题描述
如何使用列表的一个或所有元素的所有可能排列来填充固定长度的列表?
例如,我想填充 3 个元素的列表,其中包含一个或所有数字 [1,2,3] 的所有可能排列。使用这 3 个数字创建长度为 3 的列表的所有方法是:
arranging = [[1,1,1], [1,1,2], [1,2,2], [2,2,2], [1,1,3], [1,2,3], [2,2,3], [1,3,3], [2,3,3], [3,3,3]]
为了找到每个列表的可能排列,我将使用:
populating = [set(itertools.permutations(i, 3)) for i in arranging]
这等于:
populating == [{(1, 1, 1)}, {(1, 2, 1), (2, 1, 1), (1, 1, 2)}, {(1, 2, 2), (2, 2, 1), (2, 1, 2)}, {(2, 2, 2)}, {(1, 1, 3), (1, 3, 1), (3, 1, 1)}, {(3, 1, 2), (1, 3, 2), (3, 2, 1), (2, 3, 1), (1, 2, 3), (2, 1, 3)}, {(2, 2, 3), (3, 2, 2), (2, 3, 2)}, {(3, 1, 3), (3, 3, 1), (1, 3, 3)}, {(3, 2, 3), (2, 3, 3), (3, 3, 2)}, {(3, 3, 3)}]
你将如何创建列表arranging
(对不起这个可怕的名字)?还有其他更好的解决方案吗?
解决方案
您想要替换组合:
iter = itertools.combinations_with_replacement([1,2,3], 3)
如果将其显示为列表,则会得到:
>>> list(iter)
[(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 2), (1, 2, 3),
(1, 3, 3), (2, 2, 2), (2, 2, 3), (2, 3, 3), (3, 3, 3)]
请注意,这不是排列,因为它包含(1, 1, 2)
但不包含(1, 2, 1)
推荐阅读
- java - 创建表时“关系中缺少列”
- css - 材质 ui - makeStyles 无法正确创建样式
- python - Coinmarketcap 数据抓取
- c++ - 将 bpftrace 探针附加到 C++ 函数
- c++ - Qt 从派生类发出基类信号
- python - ModuleNotFoundError:jupyter 笔记本中没有名为“deeppavlov”的模块
- wordpress - WooCommerce Amazon Fulfillment SellerSKU 无效
- reactjs - 功能组件与类组件作为容器组件
- c - 如何处理“dir”的输出?
- windows - dhcpsapi.exe 文件在任务管理器中继续运行