Je veux créer ce tuple:
a=(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7),(8,8,8),(9,9,9)
J'ai essayé avec ça
a=1,1,1
for i in range (2,10):
a=a,(i,i,i)
Cependant, il crée un tuple dans un autre tuple à chaque itération.
Je vous remercie
Utilisez une virgule supplémentaire dans vos n-uplets et rejoignez simplement:
a = ((1,1,1),)
for i in range(2,10):
a = a + ((i,i,i),)
Edit : Adaptation du commentaire de juanpa.arrivillaga, si vous voulez rester en boucle, voici la bonne solution
a = [(1,1,1)]
for i in range (2,10):
a.append((i,i,i))
a = Tuple(a)
Vous pouvez le déclarer sans avoir à utiliser une boucle.
a = Tuple((i,)*3 for i in range(1, 10))
itertools.repeat
peut également être utilisé ici:
>>> from itertools import repeat
>>> [Tuple(repeat(i, 3)) for i in range(1, 10)]
[(1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5), (6, 6, 6), (7, 7, 7), (8, 8, 8), (9, 9, 9)]
Si vous voulez que le résultat final soit un tuple de tuples plutôt qu'une liste de tuples, vous pouvez à nouveau emballer Tuple
>>> Tuple(tuple(repeat(i, 3)) for i in range(1, 10))
((1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5), (6, 6, 6), (7, 7, 7), (8, 8, 8), (9, 9, 9))