簡體   English   中英

創建二進制字符串列表(Python)

[英]create list of binary strings (Python)

我有一個定向Multigraph,想用代表每個節點坐標的二進制字符串標識節點。
如何根據多圖的尺寸構建這些坐標的列表?

坐標的順序也是相關的。 第一個數字為零,然后所有數字中都有一個1,然后所有數字中都有兩個1,依此類推。 所有這些數字分組必須按相反的字典順序排列。

一個例子:

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

有聰明的方法嗎?

您可以使用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']

也可以使用遞歸來完成

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)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM