在Python中使用2个数字获取5个位置的所有排列

时间:2019-04-26 09:31:17

标签: python-3.x

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

例如: 数字是0,1

输出:

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

我知道这种使用循环的实现。 python中是否有内置函数可以执行此操作或其他任何简单方式。

1 个答案:

答案 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,
 . . .