[Python] Gibt alle Kombinationen von Elementen in der Liste aus

Ich möchte alle Kombinationen von Elementen in der Liste kennen

Zum Beispiel

['Apple','Orange','Grape']

Aus der Liste von

[['Apple'], ['Orange'], ['Grape'], ['Apple', 'Orange'], ['Apple', 'Grape'], ['Orange', 'Grape'], ['Apple', 'Orange', 'Grape']]

Ich möchte die Ausgabe erhalten. Einige Kombinationen haben nur ein Element, und einige Kombinationen enthalten mehrere Elemente. Ich weiß, dass es eine Liste von 2 ^ n-1 Antworten ist, aber ich bin gestolpert, als ich tatsächlich versucht habe, sie zu schreiben. Wird es nicht ein kompliziertes Nest sein?

Ich habe eine Standardbibliothek gefunden, die in solchen Fällen verwendet werden kann. itertools --- Iterator-Generierungsfunktion für eine effiziente Schleifenausführung

Iterator Streit Ergebnis
combinations() p,r Taple-Spalte der Länge r, keine Vervielfältigung in sortierter Reihenfolge

Zum Beispiel

test.py


import itertools

lis = [1,2,3,4]
for pair in itertools.combinations(lis, 2):
	print(pair)

Wenn Sie die oben genannten Schritte ausführen, erhalten Sie die folgenden Ergebnisse:

(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)

Ändern Sie vorerst das Argument und versuchen Sie es erneut.

test2.py


import itertools

lis = [1,2,3,4]
for team in itertools.combinations(lis, 3):
	print(team)
(1, 2, 3)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)

Mit itertools.combinations () können Sie alle Kombinationsmuster (in Tapples) mit einer beliebigen Anzahl von Elementen in der ** Liste wie folgt abrufen. ** ** ** Wenn Sie hier mit der Anzahl der Elemente von 1 beginnen und diese mit einer for-Anweisung auf die Listenlänge umstellen, erhalten Sie anscheinend zuerst die gewünschte Antwort.

all_combinations.py


import itertools

lis=['Apple','Orange','Grape']
result = []
for n in range(1,len(lis)+1):
	for conb in itertools.combinations(lis, n):
	    result.append(list(conb)) #Konvertieren Sie Taple in Listentyp
print(result)

Ausführungsergebnis

[['Apple'], ['Orange'], ['Grape'], ['Apple', 'Orange'], ['Apple', 'Grape'], ['Orange', 'Grape'], ['Apple', 'Orange', 'Grape']]

Wenn Sie itertools verwenden, scheint es mehr Situationen zu geben, in denen Sie keine Nester schreiben müssen, und es kann ein wesentlicher Punkt für Paiza- und Wettkampfprofis sein. Wie unter "Lesbarer Code" erwähnt, dachte ich, dass Sie guten Code schreiben können, wenn Sie es sich zur Gewohnheit machen, die Standardbibliothek regelmäßig zu lesen.

Es war eine Einführung in die Standardbibliothek, die ich nützlich fand!

Recommended Posts

[Python] Gibt alle Kombinationen von Elementen in der Liste aus
[Python] Checklistenelemente alle, alle
Stellen Sie sicher, dass alle Elemente in der Liste in Python identisch sind
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
[Python] Kombinieren Sie alle Elemente in einem Array
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Kopieren Sie die Liste in Python
Abrufen von Listenelementen in Python
[Python] Ruft die Liste der im Modul definierten Klassen ab
[Python] Manipulation von Elementen in der Liste (Array) [Hinzufügen / Löschen]
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
Gruppieren Sie nach aufeinanderfolgenden Elementen einer Liste in Python
Löschen Sie mehrere Elemente in der Python-Liste
Informationen zur Grundlagenliste der Python-Grundlagen
In Python werden die Elemente in der Liste sortiert und als Elemente und Vielfache ausgegeben.
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Überprüfen Sie das Verhalten des Zerstörers in Python
[Python] Lassen Sie uns die Anzahl der Elemente im Ergebnis bei der Operation des Sets reduzieren
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
Das Ergebnis der Installation von Python auf Anaconda
[Python] Ermittelt den Rang der Werte in der Liste in aufsteigender / absteigender Reihenfolge
Stellen Sie fest, ob alle Listenelemente im Diktatschlüssel vorhanden sind
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Auf der Suche nach dem schnellsten FizzBuzz in Python
Ruft die EDINET-Codeliste in Python ab
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
Geben Sie die Anzahl der CPU-Kerne in Python aus
Passen Sie die Verteilung jeder Gruppe in Python an
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Umschreiben von Elementen in einer Listenschleife (Python)
Holen Sie sich nur Unterklassenelemente in eine Liste
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Die Geschichte des Lesens von HSPICE-Daten in Python
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Lösen von Bewegungsgleichungen in Python (odeint)
Ausgabe in Form eines Python-Arrays
Suchen Sie nach dem Wert der Instanz in der Liste
Wählen Sie zufällig Elemente aus der Liste (Array) in Python aus
Sortieren Sie Listenelemente in Python in der angegebenen Reihenfolge
[Python] Manipulation von Elementen in einer Liste (Array) [Sortieren]
So entfernen Sie doppelte Elemente in der Python 3-Liste
Liste der Python-Module
Filterliste in Python
der Zen von Python
Kombination mit Vervielfältigung in Python
Die findähnliche Sache der Liste in Python
Über __all__ in Python
Verarbeitung (Python) Diagramm der Koordinaten der Liste Geben Sie an, wie oft in draw ()
Extrahieren Sie Elemente (mithilfe einer Liste von Indizes) wie NumPy aus einer Python-Liste / einem Python
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
Erleben Sie die gute Berechnungseffizienz der Vektorisierung in Python
So ermitteln Sie die Anzahl der Stellen in Python
Die Geschichte von FileNotFound im Python open () -Modus = 'w'
Lernen Sie das Entwurfsmuster "Chain of Responsibility" in Python
Implementieren Sie die Lösung der Riccati-Algebra in Python
Den Inhalt der Daten in Python nicht kennen
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
[Python] Ruft die Liste der ExifTags-Namen der Pillow-Bibliothek ab