如何在python中使用循环创建元组[重复]

ddrv8njm  于 2023-09-29  发布在  Python
关注(0)|答案(6)|浏览(109)

此问题已在此处有答案

How can I collect the results of a repeated calculation in a list, dictionary etc. (or make a copy of a list with each element modified)?(3个答案)
What is the difference between Python's list methods append and extend?(20个答案)
7小时前关闭
我想创建这个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)

我试过用这个

a=1,1,1
for i in range (2,10):
    a=a,(i,i,i)

然而,它在每次迭代中在其他元组内创建一个元组。
谢谢你

1cklez4t

1cklez4t1#

在元组中使用一个额外的逗号,然后加入:

a = ((1,1,1),)
for i in range(2,10):
    a = a + ((i,i,i),)

编辑:改编juanpa.arrivillaga的评论,如果你想坚持一个循环,这是正确的解决方案:

a = [(1,1,1)]
for i in range (2,10):
    a.append((i,i,i))
a = tuple(a)
cuxqih21

cuxqih212#

在这种情况下,您可以创建它,而不必使用循环。

a = tuple((i,)*3 for i in range(1, 10))
cfh9epnr

cfh9epnr3#

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)]

如果你希望最终结果是一个元组的元组,而不是一个元组的列表,你可以再次 Package 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))
f87krz0w

f87krz0w4#

如果我模仿这样的东西,我会用下面的方式来做:

a = tuple((n,n,n) for n in range(1,10))
print(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))

这是完成这项特定工作的最简单和最pythonic的方法。

hof1towb

hof1towb5#

元组是一个不可变的列表。这意味着,一旦你创建了一个元组,它就不能被修改。在这里阅读更多关于元组和其他顺序数据类型的信息。
所以,如果你真的需要在运行时更改一个元组:
1.将元组转换为列表
1.对列表进行必要的更改
1.将列表转换回元组

1.创建列表
1.修改列表
1.将列表转换为元组
所以,在你的情况下:

a = []
for i in range (1,10):
    a.append((i,i,i))
a = tuple(a)   
print a
zpf6vheq

zpf6vheq6#

一个小小的实验让这个工作。我猜你需要在a中的元组后面加一个逗号来说服python它是一个元组。

a = ((1,1,1),)
for i in range(2, 10):
  a = a + ((i,i,i),)

print(a)

相关问题