Was ist die Methode zur Gesamtkombination zweier Listen in Python?

王林
Freigeben: 2023-05-05 20:34:12
nach vorne
1079 Leute haben es durchsucht

Was ist ein Komplettpaket?

Zwei Tupel (a, b) (c, d), dann sind ihre Kombinationen a,c a,d b,c b,d

Methode 1

Generieren Sie eine Listenliste über die Klasse itertools, die zwei enthält. Alle möglichen Kombinationen dazwischen Listen

import itertools

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8,9]
print(list(itertools.product(list1, list2)))
Nach dem Login kopieren

Ausgabeergebnisse:

[(1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9)]
Nach dem Login kopieren

Weg 2

Versuchen Sie, einen Listenersteller zu verwenden, um verschachtelte Listen zu erstellen:

>>> [[[x,y] for x in list1] for y in list2]
[[[1, 3], [2, 3]], [[1, 4], [2, 4]]]
Nach dem Login kopieren

Oder, wenn Sie eine einzeilige Liste wünschen, entfernen Sie einfach die Klammern:

>>> [[x,y] for x in list1 for y in list2]
[[1, 3], [1, 4], [2, 3], [2, 4]]
Nach dem Login kopieren

Weg 3

Wiederholen Sie die erste Liste, permutieren Sie die zweite Liste und komprimieren Sie sie.

>>> from itertools import permutations, repeat
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> list(list(zip(r, p)) for (r, p) in zip(repeat(a), permutations(b)))
[[(1, 4), (2, 5), (3, 6)],
 [(1, 4), (2, 6), (3, 5)],
 [(1, 5), (2, 4), (3, 6)],
 [(1, 5), (2, 6), (3, 4)],
 [(1, 6), (2, 4), (3, 5)],
 [(1, 6), (2, 5), (3, 4)]]
Nach dem Login kopieren

EDIT: Wie Peter Otten betonte, sind der innere Reißverschluss und die Wiederholung überflüssig.

[list(zip(a, p)) for p in permutations(b)]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist die Methode zur Gesamtkombination zweier Listen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!