将元组附加到元组

时间:2013-12-06 04:11:15

标签: python append tuples

我可以为元组附加值

>>> x = (1,2,3,4,5)
>>> x += (8,9)
>>> x
(1, 2, 3, 4, 5, 8, 9)

但是如何将元组附加到元组

>>> x = ((1,2), (3,4), (5,6))
>>> x
((1, 2), (3, 4), (5, 6))
>>> x += (8,9)
>>> x
((1, 2), (3, 4), (5, 6), 8, 9)
>>> x += ((0,0))
>>> x
((1, 2), (3, 4), (5, 6), 8, 9, 0, 0)

我怎样才能成功

  

((1,2),(3,4),(5,6),(8,9),(0,0))

5 个答案:

答案 0 :(得分:10)

x + ((0,0),)

应该给你

((1, 2), (3, 4), (5, 6), (8, 9), (0, 0))

Python对于单元素元组有一个不稳定的语法:(x,)它显然不能只使用(x),因为它只是括号中的x,因此是奇怪的语法。使用((0, 0),),我将你的4元组对与1元组结对,而不是(0, 0)中的2元组整数。

答案 1 :(得分:4)

添加额外的括号:

>>> x = ((1,2), (3,4), (5,6)) + ((8,9),)
>>> x
((1, 2), (3, 4), (5, 6), (8, 9))

注意尾随的逗号。这将使您添加一个新的对元组。

另外,只需注意:这是追加,因为元组是不可变的。你正在创造一个完全全新的元组。

希望这有帮助!

答案 2 :(得分:3)

[请参阅下面的内容]

这也应该有效:

x += (0,0),

注意:

这是不安全的!感谢Amadan和aIKid的精彩讨论。

正如Amadan指出的那样,这个特定情况只会因为赋值运算符+=的优先级低于,而有效,所以当两个元组加入时,(0,0),已经成为((0,0),)

但如果你尝试:

((1, 2), (3, 4)) + (5, 6),

结果将是凌乱的

(((1, 2), (3, 4), 5, 6),)

因为+的优先级高于,,所以数字5和6分别加入元组! 然后中间阶段是((1, 2), (3, 4), 5, 6),,最后这个带有最终,的元组被“更正”以给出(((1, 2), (3, 4), 5, 6),)

回家消息:使用符号(5, 6),是不安全的,因为它被“更正”到((5, 6),)的优先级可能低于其他运营商。

答案 3 :(得分:0)

在python中,((0,0))(0,0)都是相同的:

>>> x=((0,0))
>>> y=(0,0)
>>> x==y
True

所以要获得((0,0)),您需要输入((0,0),)

答案 4 :(得分:0)

>>> x = ((1,2), (3,4), (5,6))

>>> x += ((8,9),)

>>> x

((1, 2), (3, 4), (5, 6), (8, 9))

>>> x += ((10,11),(12,13))

>>> x

((1, 2), (3, 4), (5, 6), (8, 9), (10, 11), (12, 13))

要使用单个元素表示元组,您必须使用尾随逗号。与list不同,元组是不可变的