重复的变化

时间:2011-09-07 13:31:05

标签: python combinatorics variations

给出一个例如两个元素l = [1,0]我需要通过重复创建所有可能的5元素变体。我已经尝试了itertools.combinations,但给了我想要的东西。

对于给定的n = 2k = 5,我应该获得2^5 = 32元素,结果应如下所示:

results = [11111,11110,11101,11100,11001,11011,11010,...00000]

2 个答案:

答案 0 :(得分:8)

>>> import itertools
>>> ["".join(item) for item in itertools.product("10", repeat=5)]
['11111', '11110', '11101', '11100', '11011', '11010', '11001', '11000', '10111', 
'10110', '10101', '10100', '10011', '10010', '10001', '10000', '01111', '01110', 
'01101', '01100', '01011', '01010', '01001', '01000', '00111', '00110', '00101', 
'00100', '00011', '00010', '00001', '00000']

答案 1 :(得分:1)

这相当于循环0..k ^ n-1并输出基数n中的当前索引。这会将您的问题减少到基本转换(这基本上等同于长除法)。