Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python effizient kartesische Produkte mehrerer Listen generieren?

Wie kann ich in Python effizient kartesische Produkte mehrerer Listen generieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-24 16:55:21114Durchsuche

How Can I Efficiently Generate Cartesian Products of Multiple Lists in Python?

Kartesische Produkte aus mehreren Listen generieren

Das kartesische Produkt mehrerer Listen zu erhalten, bei dem jede mögliche Kombination von Werten erzeugt wird, ist eine gängige Praxis Aufgabe in der Programmierung. Mit itertools.product, einem leistungsstarken Python-Modul, das seit Python 2.6 verfügbar ist, können Sie dieses Ziel mühelos erreichen.

Um itertools.product zu verwenden, geben Sie einfach die Listen an, die Sie als Argumente kombinieren möchten. Zum Beispiel mit dem folgenden Satz von Listen:

somelists = [
   [1, 2, 3],
   ['a', 'b'],
   [4, 5]
]

Sie können das kartesische Produkt wie folgt erhalten:

import itertools

for element in itertools.product(*somelists):
    print(element)

Dieser Code generiert effektiv alle möglichen Kombinationen von Werten aus den Eingabelisten . Die Ausgabe wäre:

(1, 'a', 4)
(1, 'a', 5)
(1, 'b', 4)
(1, 'b', 5)
(2, 'a', 4)
(2, 'a', 5)
...

Alternativ, wenn die Listen explizit als separate Argumente übergeben würden, würde der Code so aussehen:

for element in itertools.product([1, 2, 3], ['a', 'b'], [4, 5]):
    print(element)

Durch Nutzung der Flexibilität von itertools.product können Sie problemlos komplexe Fälle bearbeiten, in denen die Eingabedaten aus verschachtelten Listen oder Listen mit unterschiedlicher Länge bestehen.

Das obige ist der detaillierte Inhalt vonWie kann ich in Python effizient kartesische Produkte mehrerer Listen generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn