2010-08-06 45 views
8

這個問題有點令人誤解,因爲一個元組是不可變的。我要的是:Python:如何更改(最後一個)元組元素?

有一個元組a = (1, 2, 3, 4)得到一個元組b是完全一樣,除了它,比方說,中a兩次最後一個元素的最後一個參數a

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

+3

如果您可以提供幫助,請考慮使用列表,如果您要對元素進行就地操作。 – user37078 2010-08-06 14:14:22

+0

我覺得更有意義,使用元組在我的情況 - 我要代表程序版本,形式 'major.minor.branch.build - >(主要,次要,分公司,建)' ,我需要從給定版本獲取'上一版本'的版本 – 2010-08-06 14:34:54

+0

您還可以使用'distutils.version.StrictVersion'類來獲得版本號。 – SiggyF 2011-03-04 18:05:43

回答

19
b = a[:-1] + (a[-1]*2,) 

什麼我在這裏做是兩個元組的級聯,所述第一含一切,但最後一個元素,和一個新的元組包含最終元素的突變。結果是一個包含你想要的新元組。

注意,對於+返回一個元組,兩個操作數必須是一個元組。

+2

'(a [-1] * 2)''?以上引發TypeError。 (後綴逗號是必需的一個項目元組) – Skilldrick 2010-08-06 14:11:00

+0

@Skilldrick謝謝,編輯 – Ivo 2010-08-06 14:19:01

6

我會做這樣的事情:

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

+1:這是相當清晰,靈活。 – EOL 2010-08-06 15:18:26

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 [-1]是最後一個元素,我們將它乘以兩。 (a [-1] * 2)將結果轉換爲元組,並使用+運算符將切片元組與它連接。結果放在b中。

您可能可以將其適用於您的特定情況。

相關問題