Seite 1 von 1

Kann itertools.permutations das?

Verfasst: Montag 28. Dezember 2020, 01:31
von Strawk
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:

Re: Kann itertools.permutations das?

Verfasst: Montag 28. Dezember 2020, 02:06
von __blackjack__
@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.