创建二进制字符串列表(Python)

时间:2015-05-25 16:56:09

标签: python list binary

我有一个定向的Multigraph,想要用表示每个节点坐标的二进制字符串来识别节点 如何根据多图的维度建立这些坐标的列表?

坐标的顺序也是相关的。第一个数字为零,然后是所有数字,其中一个为1,然后是所有数字,其中包含两个1,依此类推。所有这些数字组必须按照反向词典顺序排列。

一个例子:

n = 3
bin_str = [000, 100, 010, 001, 110 101, 011, 111]

有一种聪明的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用itertools.product

from itertools import product
n = 3
# generate product in reverse lexicographic order
bin_str = [''.join(p) for p in product('10', repeat=n)]
# ['111', '110', '101', '100', '011', '010', '001', '000']    
# sort by number of ones
bin_str.sort(key=lambda s: s.count('1'))
# ['000', '100', '010', '001', '110', '101', '011', '111']

答案 1 :(得分:1)

也可以使用递归

完成
def bin_list(n):
      if n == 0:
            #base case
            return ['']
      else:
            return [i + '0' for i in bin_list(n-1)] + [i + '1' for i in bin_list(n-1)]