Heim >Backend-Entwicklung >Python-Tutorial >Wie koppele ich Elemente aus kurzen und langen Listen mithilfe von Permutationen?

Wie koppele ich Elemente aus kurzen und langen Listen mithilfe von Permutationen?

DDD
DDDOriginal
2024-10-29 01:47:02661Durchsuche

How to Pair Elements from Short and Long Lists Using Permutations?

Übereinstimmende Permutationen: Lange und kurze Listen ausrichten

Angesichts zweier Listen unterschiedlicher Länge möchten wir Paarungen basierend auf der Länge der Listen erstellen kürzere Liste. Jedes Element aus der kürzeren Liste sollte einer Permutation der Elemente aus der längeren Liste entsprechen.

Zum Beispiel mit Namen = ['a', 'b'] und Zahlen = [1, 2], wir würde Folgendes erhalten:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]

Wenn die Namensliste länger ist, z. B. Namen = ['a', 'b', 'c'], würden die Permutationen erweitert, um Folgendes einzuschließen:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
[('a', 1), ('c', 2)]
[('c', 1), ('a', 2)]
[('b', 1), ('c', 2)]
[('c', 1), ('b', 2)]

Lösung mit itertools.product

Ein einfacher Ansatz besteht darin, die Funktion itertools.product aus der Python-Standardbibliothek zu verwenden. Es generiert ein kartesisches Produkt von Eingabe-Iterablen und erstellt alle möglichen Kombinationen.

import itertools

a = ["foo", "melon"]
b = [True, False]
c = list(itertools.product(a, b))

# Output:
# [("foo", True), ("foo", False), ("melon", True), ("melon", False)]

In unserem speziellen Fall können wir itertools.product verwenden, um die Elemente der kürzeren Liste mit den Permutationen der längeren Liste zu koppeln. Die Permutationen werden durch Auflisten aller möglichen Neuordnungen der Elemente der längeren Liste generiert.

Das obige ist der detaillierte Inhalt vonWie koppele ich Elemente aus kurzen und langen Listen mithilfe von Permutationen?. 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