Python将列表追加到元组中

2 投票
5 回答
1213 浏览
提问于 2025-04-17 20:23

我有一个这样的元组:

vertices = ([0,0],[0,0],[0,0]);

然后在每次循环中,我想添加以下列表:

[x, y]

我应该怎么做呢?

5 个回答

0

我不太明白你的意思,不过如果你想在每个顶点上添加x和y的值,可以这样做:

vertices = ([0,0],[0,0],[0,0])

for v in vertices:
    v[0] += x
    v[1] += y
1

你可能想要一个列表,就像上面提到的那样。但如果你真的需要一个元组,可以通过把多个元组合并在一起创建一个新的元组:

vertices = ([0,0],[0,0],[0,0])
for x in (1, 2):
    for y in (3, 4):
        vertices += ([x,y],)

另外,为了提高效率,你可以在构建元组的时候先使用列表,最后再转换成元组:

vertices = ([0,0],[0,0],[0,0])
#...
vlist = list(vertices)
for x in (1, 2):
    for y in (3, 4):
        vlist.append([x, y])
vertices = tuple(vlist)

无论哪种方式,最后得到的 vertices 是:

([0, 0], [0, 0], [0, 0], [1, 3], [1, 4], [2, 3], [2, 4])
1

你可以把两个元组连接在一起:

>>> vertices = ([0,0],[0,0],[0,0])
>>> lst = [10, 20]
>>> vertices = vertices + tuple([lst])
>>> vertices
([0, 0], [0, 0], [0, 0], [10, 20])
1

元组是不能被修改的。如果你想添加一个新的元素,你需要用一个新的元组来替换原来的元组,或者把它改成一个列表。列表就是可以修改的元组。

vertices = [[0,0],[0,0],[0,0]]

for ...:
    vertices.append([x, y])
5

你不能把一个 list 添加到 tuple 里,因为元组是“不可变的”(也就是说它们不能被改变)。不过,把一个 tuple 添加到 list 里是很简单的:

vertices = [(0, 0), (0, 0), (0, 0)]
for x in range(10):
    vertices.append((x, y))

你可以把多个元组加在一起,形成一个 新的、更长的元组,但这样做其实不太符合元组的用途,而且当元素越来越多时,速度会变得很慢。在这种情况下,使用列表会更好。

撰写回答