在python中获得2个数字的5个位置的所有排列

问题描述 投票:-2回答:1

我必须为python中的2个数字生成5个位置的所有排列

例如:数字是0,1

输出:

0 0 0 0 0,  
0 0 0 0 1, 
    .
    .
1 1 1 1 1

我知道这个实现使用循环。在python中是否有任何内置函数来执行此操作或任何其他简单方法。

python-3.x
1个回答
1
投票

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,
 . . .
© www.soinside.com 2019 - 2024. All rights reserved.