Deux tuples (a, b) (c, d), alors leurs combinaisons sont a,c a,d b,c b,d
Générer une liste via la classe itertools, qui contient deux Toutes les combinaisons potentielles entre lists
import itertools list1 = [1, 2, 3, 4] list2 = [5, 6, 7, 8,9] print(list(itertools.product(list1, list2)))
Résultats de sortie :
[(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)]
Essayez d'utiliser un générateur de listes pour créer des listes imbriquées :
>>> [[[x,y] for x in list1] for y in list2] [[[1, 3], [2, 3]], [[1, 4], [2, 4]]]
Ou, si vous voulez une liste d'une seule ligne, supprimez simplement les crochets :
>>> [[x,y] for x in list1 for y in list2] [[1, 3], [1, 4], [2, 3], [2, 4]]
répétez la première liste, permutez la deuxième liste et compressez-les ensemble
>>> 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)]]
EDIT : Comme Peter Otten l'a souligné, le zip intérieur et la répétition sont redondants.
[list(zip(a, p)) for p in permutations(b)]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!