我必须为python中的2个数字生成5个位置的所有排列
例如:数字是0,1
输出:
0 0 0 0 0,
0 0 0 0 1,
.
.
1 1 1 1 1
我知道这个实现使用循环。在python中是否有任何内置函数来执行此操作或任何其他简单方法。
itertools.product()
该工具计算输入迭代的笛卡尔积。它等同于嵌套的for循环。
例如,乘积(A,B)与A中的x的((x,y)相同,对于B中的y,返回相同的值)。
import itertools
lst = list(itertools.product([0, 1], repeat=5))
print (lst)
输出:
[(0, 0, 0, 0, 0), (0, 0, 0, 0, 1), (0, 0, 0, 1, 0), (0, 0, 0, 1, 1), (0, 0, 1, 0, 0), (0, 0, 1, 0, 1), (0, 0, 1, 1, 0), (0, 0, 1, 1, 1), (0, 1, 0, 0, 0), (0, 1, 0, 0, 1), (0, 1, 0, 1, 0), (0, 1, 0, 1, 1) ...
.
for item in lst:
i = ' '.join(str(e) for e in item)
print ("{},".format(i))
输出:
0 0 0 0 0,
0 0 0 0 1,
0 0 0 1 0,
0 0 0 1 1,
0 0 1 0 0,
0 0 1 0 1,
0 0 1 1 0,
0 0 1 1 1,
0 1 0 0 0,
0 1 0 0 1,
0 1 0 1 0,
. . .