二进制序列的所有排列x位长

我想找到一种干净巧妙的方法(在python中)来找到1s和0s x chars字符串的所有排列。理想情况下,这将是快速的,并且不需要进行太多的迭代…

因此,对于x = 1,我想要:[‘0’,‘1’] x = 2 [‘00’,‘01’,‘10’,‘11’]

等等..

现在我有这个,它很慢,看起来很不雅:

    self.nbits = n

items = []

for x in xrange(n+1):

ones = x

zeros = n-x

item = []

for i in xrange(ones):

item.append(1)

for i in xrange(zeros):

item.append(0)

items.append(item)

perms = set()

for item in items:

for perm in itertools.permutations(item):

perms.add(perm)

perms = list(perms)

perms.sort()

self.to_bits = {}

self.to_code = {}

for x in enumerate(perms):

self.to_bits[x[0]] = ''.join([str(y) for y in x[1]])

self.to_code[''.join([str(y) for y in x[1]])] = x[0]

回答:

itertools.product 为此:

>>> import itertools

>>> ["".join(seq) for seq in itertools.product("01", repeat=2)]

['00', '01', '10', '11']

>>> ["".join(seq) for seq in itertools.product("01", repeat=3)]

['000', '001', '010', '011', '100', '101', '110', '111']

以上是 二进制序列的所有排列x位长 的全部内容, 来源链接: utcz.com/qa/399536.html

回到顶部