如何在python中创建一个带循环的元组

Hol*_*ack 9 python for-loop tuples

我想创建这个元组:

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)
Run Code Online (Sandbox Code Playgroud)

我试过这个

a=1,1,1
for i in range (2,10):
    a=a,(i,i,i)
Run Code Online (Sandbox Code Playgroud)

但是,它会在每次迭代中在其他元组内创建一个元组.

谢谢

Oli*_*çon 8

您可以在不必使用循环的情况下声明它.

a = tuple((i,)*3 for i in range(1, 10))
Run Code Online (Sandbox Code Playgroud)


Fat*_*ici 5

在元组中使用逗号,然后加入:

a = ((1,1,1),)
for i in range(2,10):
    a = a + ((i,i,i),)
Run Code Online (Sandbox Code Playgroud)

编辑:适应juanpa.arrivillaga的注释,如果您想坚持使用循环,这是正确的解决方案:

a = [(1,1,1)]
for i in range (2,10):
    a.append((i,i,i))
a = tuple(a)   
Run Code Online (Sandbox Code Playgroud)


Roa*_*ner 5

itertools.repeat也可以在这里使用:

>>> 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)]
Run Code Online (Sandbox Code Playgroud)

如果您希望最终结果位于元组的元组而不是元组列表中,您可以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))
Run Code Online (Sandbox Code Playgroud)