Vous pouvez le faire en utilisant une boucle externe pour obtenir toutes les combinaisons de 3 sous-listes en a
, puis une boucle interne pour générer les produits cartésiens de ces sous-listes:
import itertools
a = [[1, 2, 3], ['a', 'b'], [7, 8, 9], ['c', 'd', 'e']]
for groups in itertools.combinations(a, 3):
for t in itertools.product(*groups):
print(t)
sortie
(1, 'a', 7)
(1, 'a', 8)
(1, 'a', 9)
(1, 'b', 7)
(1, 'b', 8)
(1, 'b', 9)
(2, 'a', 7)
(2, 'a', 8)
(2, 'a', 9)
(2, 'b', 7)
(2, 'b', 8)
(2, 'b', 9)
(3, 'a', 7)
(3, 'a', 8)
(3, 'a', 9)
(3, 'b', 7)
(3, 'b', 8)
(3, 'b', 9)
(1, 'a', 'c')
(1, 'a', 'd')
(1, 'a', 'e')
(1, 'b', 'c')
(1, 'b', 'd')
(1, 'b', 'e')
(2, 'a', 'c')
(2, 'a', 'd')
(2, 'a', 'e')
(2, 'b', 'c')
(2, 'b', 'd')
(2, 'b', 'e')
(3, 'a', 'c')
(3, 'a', 'd')
(3, 'a', 'e')
(3, 'b', 'c')
(3, 'b', 'd')
(3, 'b', 'e')
(1, 7, 'c')
(1, 7, 'd')
(1, 7, 'e')
(1, 8, 'c')
(1, 8, 'd')
(1, 8, 'e')
(1, 9, 'c')
(1, 9, 'd')
(1, 9, 'e')
(2, 7, 'c')
(2, 7, 'd')
(2, 7, 'e')
(2, 8, 'c')
(2, 8, 'd')
(2, 8, 'e')
(2, 9, 'c')
(2, 9, 'd')
(2, 9, 'e')
(3, 7, 'c')
(3, 7, 'd')
(3, 7, 'e')
(3, 8, 'c')
(3, 8, 'd')
(3, 8, 'e')
(3, 9, 'c')
(3, 9, 'd')
(3, 9, 'e')
('a', 7, 'c')
('a', 7, 'd')
('a', 7, 'e')
('a', 8, 'c')
('a', 8, 'd')
('a', 8, 'e')
('a', 9, 'c')
('a', 9, 'd')
('a', 9, 'e')
('b', 7, 'c')
('b', 7, 'd')
('b', 7, 'e')
('b', 8, 'c')
('b', 8, 'd')
('b', 8, 'e')
('b', 9, 'c')
('b', 9, 'd')
('b', 9, 'e')
Il me donne 3 répétais toute la longueur d'une combinaison telle que: [(1, 'a', 7, 'c', 1, 'a', 7, 'c', 1, 'a' , 7, 'c'), ....] – dPdms
il ne fait pas ce qui est mentionné dans la question –
@dPdms excuses, je vais modifier la réponse –