Variable Anzahl an for Schleifen

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
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Hey,

ich habe öfter das Problem, dass ich eine Variable Anzahl an for Schleifen benötige. Kann sein, dass ich den Wald vor lauter Bäumen nicht seh aber mir fällt einfach keine elegante Lösung dazu ein. Um mal ein Beispiel zu geben:


Code: Alles auswählen

import string
buchstaben_g = string.uppercase
buchstaben_k = string.lowercase

for buchstabe_k in buchstaben_k:
     for buchstabe_g in buchstaben_g:
         print (buchstabe_k, buchstabe_g)
Dieser Code würde alle möglichen Zusammenstellungen von Groß und Kleinbuchstaben bei einer Anzahl von 2 ausgeben. Wie könnte ich es aber mit einer Variablen Anzahl handlen? z.B. soll eine Zahl eingegeben und dann alle Möglichkeiten von Groß - und Kleinbuchstaben dieser Länge ausgegeben werden.
mfg

Thomas :-)
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

im Modul itertools gibts das (ab Py 2.6 enthalten):

Code: Alles auswählen

def combinations(iterable, r):
    # combinations('ABCD', 2) --> AB AC AD BC BD CD
    # combinations(range(4), 3) --> 012 013 023 123
    pool = tuple(iterable)
    n = len(pool)
    if r > n:
        return
    indices = range(r)
    yield tuple(pool[i] for i in indices)
    while 1:
        for i in reversed(range(r)):
            if indices[i] != i + n - r:
                break
        else:
            return
        indices[i] += 1
        for j in range(i+1, r):
            indices[j] = indices[j-1] + 1
        yield tuple(pool[i] for i in indices)
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Hey,

die Funktion kannte ich noch nicht. Vielen Dank. :)
mfg

Thomas :-)
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

itertools.product würde wahrscheinlich den Zweck besser erfüllen.
MfG
HWK
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Genau das gleiche hab ich nach austesten der funktion combinations auch festgestellt. :D

Aber nun hab ich gefunden was ich gesucht hab.
mfg

Thomas :-)
Antworten