我必须在python中用2个数字生成5个位置的所有排列
例如:
数字是0,1
输出:
0 0 0 0 0,
0 0 0 0 1,
.
.
1 1 1 1 1
我知道这种使用循环的实现。 python中是否有内置函数可以执行此操作或其他任何简单方式。
答案 0 :(得分:1)
itertools.product()
此工具计算输入可迭代项的笛卡尔积。它是 等效于嵌套的for循环。
例如,product(A,B)返回 与(A中x等于B中y等于((x,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,
. . .