簡體   English   中英

給定長度為 n 的二進制數(0 或 1 或無)列表,如何確定所有可能的組合?

[英]How to determine all the possible combinations given a list of binary numbers (0s or 1s or None) of length n?

我想編寫一個函數來確定給定二進制數(0 或 1 或無)的長度為 n 的列表的所有可能組合。

假設我的列表長度應為 3。比所需的輸出應該是:

arrangement_1 = [0,0,0]
arrangement_2 = [1,0,0]
arrangement_3 = [0,1,0]
arrangement_4 = [0,0,1]
arrangement_5 = [1,1,0]
arrangement_6 = [1,0,1]
arrangement_7 = [0,1,1]
arrangement_8 = [1,1,1]
arrangement_9 = [0,0,None]
arrangement_10 = [None,0,0]
arrangement_11 = [0,None,0]
arrangement_12 = [0,None,None]
arrangement_13 = [None,0,None]
arrangement_14 = [None,None,0]
arrangement_15 = [1,1,None]
arrangement_16 = [None,1,1]
arrangement_17 = [1,None,1]
arrangement_18 = [1,None,None]
arrangement_19 = [None,1,None]
arrangement_20 = [None,None,1]
arrangement_21 = [None,1,0]
arrangement_N  = [...]

我通過給它一個 1s/0s 和 None 元素的隨機初始狀態來嘗試以下函數,但它沒有給我所需的輸出(我也嘗試了其他函數,如組合 - 也沒有所需的輸出):

def calc_permutations(list = []): # Takes list with n elements and calculates no of permutations and return dictionary of number of permutations and states

    possible_states = [] 

    for i in permutations(list,len(list)):
        possible_states.append(i)

    possible_states = {"noOfstates": len(possible_states), "states": possible_states} 
    return possible_states 

您可以使用itertools.product

from itertools import product
alphabet = [0, 1, None]
for x in product(alphabet, repeat=3):
  print(x)

輸出:

(0, 0, 0)
(0, 0, 1)
(0, 0, None)
(0, 1, 0)
(0, 1, 1)
(0, 1, None)
(0, None, 0)
(0, None, 1)
(0, None, None)
(1, 0, 0)
(1, 0, 1)
(1, 0, None)
(1, 1, 0)
(1, 1, 1)
(1, 1, None)
(1, None, 0)
(1, None, 1)
(1, None, None)
(None, 0, 0)
(None, 0, 1)
(None, 0, None)
(None, 1, 0)
(None, 1, 1)
(None, 1, None)
(None, None, 0)
(None, None, 1)
(None, None, None)

暫無
暫無

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

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