Python:如何更改元组的(最后)一个元素?

10

这个问题有点误导,因为元组是不可变的。我想要的是:

给定一个元组 a = (1, 2, 3, 4),获得一个元组 b,它与 a 完全相同,除了最后一个参数,它是 a 的最后一个元素的两倍。

=> b == (1, 2, 3, 8)


3
如果可以的话,在进行元素的原地操作时,考虑使用列表。 - Dan
我认为在我的情况下使用元组更有意义 - 我需要表示程序版本,形式为 major.minor.branch.build -> (major, minor, branch, build) 并且我需要从给定版本获取“上一个构建”的版本。 - Cristian Diaconescu
您还可以使用distutils.version.StrictVersion类来处理版本号。 - SiggyF
3个回答

23
b = a[:-1] + (a[-1]*2,)
我在这里做的是将两个元组连接起来,第一个元组包含除最后一个元素以外的所有内容,第二个元组包含最后一个元素的变异。结果是一个新的元组,其中包含您想要的内容。
请注意,对于“+”返回一个元组,两个操作数必须是元组。

2
(a[-1] * 2,) 怎么样?上面的语句会抛出 TypeError。(一个元素的元组需要加逗号) - Skilldrick

8
我会像这样做:

我会这样做:

b=list(a)
b[-1]*=2
b=tuple(b)

5
这是一个实现方式:
>>> a = (1, 2, 3, 4)
>>> b = a[:-1] + (a[-1]*2, )
>>> a
(1, 2, 3, 4)
>>> b
(1, 2, 3, 8)

第二行发生了什么?a[:-1]表示除最后一个元素外的所有a元素。a[-1]是最后一个元素,我们将它乘以二。(a[-1]*2, )将结果转换为元组,并使用+运算符将切片后的元组与之连接。结果被放入b。

您可以根据您的具体情况进行调整。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接