Kann itertools.permutations das?

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
Benutzeravatar
Strawk
User
Beiträge: 244
Registriert: Mittwoch 15. Februar 2017, 11:42
Wohnort: Aachen
Kontaktdaten:

Hallo!
Gegeben sei die Buchstabenkombination: bk = "jtgänep"
Mit combinations = list(itertools.permutations(bk, 7)) entsteht eine Liste combinations, die alle möglichen/denkbaren Reihenfolgen von bk enthält. Was ich möchte: Die Liste soll auch alle Kombinationen enthalten mit nur 1, 2, 3, 4, 5 und 6 Elementen aus bk. Wie kann ich das realisieren?
Grüße, Strawk :geek:
Ich programmiere erfolglos, also bin ich nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Strawk: `combinations` ist ein bisschen irreführend für das Ergebnis von `itertools.permutations()`. Wie würdest Du denn dann das Ergebnis von `itertools.combinations()` nennen?

Ich würde die entsprechenden `permutations()`-Iteratoren mit einem Generatorausdruck erstellen und mit `chain.from_iterable()` verketten:

Code: Alles auswählen

#!/usr/bin/env python3
from itertools import chain, permutations


def main():
    characters = "jtgänep"
    all_permutations = list(
        chain.from_iterable(
            permutations(characters, length)
            for length in range(1, len(characters) + 1)
        )
    )
    print(len(all_permutations))


if __name__ == "__main__":
    main()
Gibt 13699 aus.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten