2016-07-01 10 views
2

Mein Ziel ist es, ein Array aller möglichen Bitkombinationen der Länge n zu erstellen. Zum Beispiel, wenn n = 3, soll der Zielantwortsatz aussiehtPython - Algorithmus zum Erzeugen aller möglichen Arrays von Einsen und Nullen einer gegebenen Länge

000, 
001, 
010, 
100, 
011, 
101, 
110, 
111 

ich die algorithmic solution gefunden habe, indem ich ganz keine Erfahrung in Iteratoren und C++ im Allgemeinen. Kann jemand einen Hinweis geben, wie man die nächste Funktion in Python umschreibt?

Antwort

4
>>> import itertools 
>>> result = ["".join(item) for item in itertools.product("01", repeat=3)] 
>>> print result 
['000', '001', '010', '011', '100', '101', '110', '111'] 
+0

Majic !!!!!!!!!! –

2

Ohne itertools: drucken Sie die Zahlen 0-2 ** n in der Basis 2 und Pad sie mit Nullen:

for i in range(2 ** n): 
    print('{0:b}'.format(i).rjust(n, '0')) 

Beachten Sie, dass diese in jeder Sprache eine viel einfachere Lösung führt. Alles, was Sie brauchen, ist eine Funktion, die Sie von Base Ten in Base Two umwandeln können. Für jede Nummer von 0 bis 2 ** n konvertieren Sie sie dann in Basis 2 und drucken oder speichern die Konvertierung.

Um x in Basis zwei zu konvertieren, teilen Sie es durch 2, bis es 0 erreicht und verfolgen Sie die Reste. Die Liste der Reste, in umgekehrter Reihenfolge, ist x in der Basis 2:

x = 13 
13/2 = 6 remainder 1 
6/2 = 3 remainder 0 
3/2 = 1 remainder 1 
1/2 = 0 remainder 1 

=> 13 in base 2 = 1101 
+0

Alternativ nur ein Listenverständnis: '['{0: b}'. Format (i) .rjust (n, '0') für i im Bereich (2 ** n)]' – Vatine

1
import itertools 

#Possible characters 
n = [0, 1] 
#Asking required length 
l = int(input("length: ")) 
#Putting all possibilities in list 
r = list(itertools.product(n, repeat=l)) 

print(r) 

Python hat immer ein paar praktischen Bibliotheken oder Funktionen, um komplexe Dinge einfach zu machen, und Long- Arbeit kurz zu machen.

In itertools.product() sollte Ihr erster Parameter ein Array der Zeichen sein, von denen Sie alle Möglichkeiten wünschen, und die zweite nach dem Wiederholungsschlüsselwort ist die Länge der Ergebnisse.

Verwandte Themen