2016-04-03 9 views
0

Ich möchte alle möglichen Listen von Binärvektoren bis zu einer bestimmten Länge erstellen, gibt es eine bessere "pythonische" Möglichkeit, dies zu tun?Python: Erstellen Sie alle möglichen eindeutigen Listen mit 1 oder 0 bestimmter Länge

1 
0 
11 
10 
01 
00 
111 
110 
101 
100 
011 
010 
001 
000 
[...] 

ich eine rekursive Funktion des Inkrementierens Größe verwendet: so etwas wie dieses

def createAllBinHelper(length): 
    def createAllBin(thelist, length): 
     if length == 0: 
      allpossibilities.append(thelist) 
     else: 
      createAllBin(thelist+'1', length-1) 
      createAllBin(thelist+'0', length-1) 

    allpossibilities = [] 

    for i in range(1,length): 
     createAllBin('', i) 

    return allpossibilities 
+0

@MarkTolonen Ich denke du meinst 'itertools.product' –

+1

Sie meinen, in binär zu zählen? 'für i in Bereich (n): print (bin (i) [2:])' – msw

+1

@ msw Die einzige Einschränkung ist, dass die Beispielausgabe nicht in Ordnung ist (1, 0, 3, 2, 1, 0. ..), was egal ist. –

Antwort

0

Vielleicht könnten Sie interessieren

maxLength = 4 
L = [''] 
for n in range(maxLength): 
    tmp = [] 
    for el in L: 
     tmp.append(el+'0') 
     tmp.append(el+'1') 
     tmp.append('') 
    L = tmp 
L = sorted(set(L)) 
print(L) 

Ausgang

['', '0', '00', '000', '0000', '0001', '001', '0010', '0011', '01', '010', '0100', '0101', '011', '0110', '0111', '1', '10', '100', '1000', '1001', '101', '1010', '1011', '11', '110', '1100', '1101', '111', '1110', '1111'] 
0

Hier ist etwas anderes, wenn Du fühlst dich ein bisschen gelangweilt

Dies wird Ihnen die tatsächlichen binären Kombinationen (ohne die Nullen).

Oh, ja, und Ausgang

1 
01 
11 
001 
101 
011 
111 
0001 
1001 
0101 
1101 
0011 
1011 
0111 
1111 
1

Sie eine for Schleife mit itertools.product kombinieren.

from itertools import product 

for i in range(1, 4): 
    for p in product('10', repeat=i): 
     print(''.join(p)) 

Ändern der Obergrenze von range-n+1 lassen Sie die maximale Länge der binären Zeichenfolge festgelegt.

Dies ist die einzige aktuelle Antwort, die Ihre Beispielausgabe wortwörtlich erzeugt (was nur zählt, wenn die Reihenfolge wichtig ist).