【发布时间】:2018-12-02 22:44:51
【问题描述】:
我想找到一种干净而聪明的方法(在 python 中)来查找长度为 1 和 0 x 字符的字符串的所有排列。理想情况下,这会很快,并且不需要进行太多迭代......
所以,对于 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]
【问题讨论】:
-
请注意,您实际上并不是在描述排列。
-
我感觉有一个代码高尔夫回答流即将到来。 :-)
标签: python algorithm combinatorics