Problem mit Algorithmus

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
odium
User
Beiträge: 2
Registriert: Freitag 8. Juli 2011, 15:32

Hallo,

ich stehe gerade leider total auf dem Schlauch, vielleicht liegt es an der Hitze oder ich sehe den Wald vor lauter Bäumen nicht. Es wäre super, wenn mir jemand helfen könnte.
Ich habe eine Liste "a" mit n Werten. Aus dieser Liste "a" möchte ich eine Liste "b" erzeugen in der jede mögliche Kombination von den den Werten aus Liste "a" sein soll, wobei jeder Wert entweder an (1) oder aus (0) sein kann. Also sollte Liste "b" dann 2^n Einträge haben.
also bei n=3 in Liste "a"
Liste "b":
111
110
100
000
001
011
101
010
Kann mir jemand einen Tipp geben, ich bin mir recht sicher, dass es nicht schwer ist, aber irgendwie will es gerade nicht.

Vielen Dank,
Christoph
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Die Funktion `product` im `itertools`-Modul liefert das von dir gewünschte Ergebnis. Wenn du den entsprechenden Algorithmus selber umsetzen möchtest, dann poste am besten deinen bisher dazu vorhandenen Code. Daran kann man dir am besten helfen.

Sebastian
Das Leben ist wie ein Tennisball.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Ich werfe noch itertools.permutations in den Raum ;-). "Permutation" ist auch ein schönes Stichwort zum selbersuchen und -verstehen.
odium
User
Beiträge: 2
Registriert: Freitag 8. Juli 2011, 15:32

Ich glaube das ist genau das, was ich gesucht habe!
Vielen Dank!
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

wenn du immer alle Zahlen von 0 bis (2**n)-1 in binärer Form haben willst so kannst du auch folgendes machen:

Code: Alles auswählen

for i in xrange(2**n):
    "{:0>3s}".format(bin(i)[2:])
Den String abhängig von n mit 0s auffüllen kannst du noch selber machen :twisted:
Antworten