python - 如何增量创建数字组合?
问题描述
给定以下数字:
[0, 1, 2, 3, 4, 5]
只要该数字中没有重复的数字,我想创建所有可能的组合:
0
01
02
...
54
012
013
014
...
054
0123
01234
...
054321
...
154
...
543210
我已经能够通过这样做来开始这个,但我不认为它是可扩展的:
for key in keys:
for key2 in keys:
if key != key2:
print(f'{key}{key2}')
解决方案
似乎您正在寻求增加可用itertools
于此的排列数量:
from itertools import permutations
from pprint import pprint
data = range(6)
def inc_perms(it):
for i, _ in enumerate(data):
yield from permutations(data, i)
pprint(list(inc_perms(data)))
[(0,),
(0, 1),
(1, 0),
(0, 1, 2),
(0, 2, 1),
(1, 0, 2),
(1, 2, 0),
(2, 0, 1),
(2, 1, 0),
(0, 1, 2, 3),
(0, 1, 3, 2),
(0, 2, 1, 3),
(0, 2, 3, 1),
(0, 3, 1, 2),
(0, 3, 2, 1),
(1, 0, 2, 3),
(1, 0, 3, 2),
(1, 2, 0, 3),
(1, 2, 3, 0),
(1, 3, 0, 2),
(1, 3, 2, 0),
(2, 0, 1, 3),
(2, 0, 3, 1),
(2, 1, 0, 3),
(2, 1, 3, 0),
(2, 3, 0, 1),
(2, 3, 1, 0),
(3, 0, 1, 2),
(3, 0, 2, 1),
(3, 1, 0, 2),
(3, 1, 2, 0),
(3, 2, 0, 1),
(3, 2, 1, 0),
(0, 1, 2, 3, 4),
(0, 1, 2, 4, 3),
(0, 1, 3, 2, 4),
(0, 1, 3, 4, 2),
(0, 1, 4, 2, 3),
(0, 1, 4, 3, 2),
(0, 2, 1, 3, 4),
(0, 2, 1, 4, 3),
(0, 2, 3, 1, 4),
(0, 2, 3, 4, 1),
(0, 2, 4, 1, 3),
(0, 2, 4, 3, 1),
(0, 3, 1, 2, 4),
(0, 3, 1, 4, 2),
(0, 3, 2, 1, 4),
(0, 3, 2, 4, 1),
(0, 3, 4, 1, 2),
(0, 3, 4, 2, 1),
(0, 4, 1, 2, 3),
(0, 4, 1, 3, 2),
(0, 4, 2, 1, 3),
(0, 4, 2, 3, 1),
(0, 4, 3, 1, 2),
(0, 4, 3, 2, 1),
(1, 0, 2, 3, 4),
(1, 0, 2, 4, 3),
(1, 0, 3, 2, 4),
(1, 0, 3, 4, 2),
(1, 0, 4, 2, 3),
(1, 0, 4, 3, 2),
(1, 2, 0, 3, 4),
(1, 2, 0, 4, 3),
(1, 2, 3, 0, 4),
(1, 2, 3, 4, 0),
(1, 2, 4, 0, 3),
(1, 2, 4, 3, 0),
(1, 3, 0, 2, 4),
(1, 3, 0, 4, 2),
(1, 3, 2, 0, 4),
(1, 3, 2, 4, 0), ...
推荐阅读
- c# - 使用Task.Run时如何修复“System.Reflection.TargetInvocationException:'调用的目标已引发异常。'”
- c++ - C 不打印字符串
- excel - Excel VBA代码中的网页抓取不起作用
- python - 在 Python 和 Excel 2010 中使用 win32 时如何克服 65536 Excel 行限制
- javascript - querySelectorAll 和 appendChild 的组合不起作用
- python - 如何让节点匹配具有特定值的多个属性?
- javascript - 用于令牌刷新的 axios 全局拦截器
- google-app-engine - 使用 php73 时 500 错误未报告为日志级别错误
- selenium - chromedriver.exe 已经在 PATH 中,但仍然收到错误消息
- python - 根据索引和值创建列表列表