【问题标题】:Append tuples to a tuples将元组附加到元组
【发布时间】:2013-12-23 07:51:40
【问题描述】:

我可以将值附加到元组

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

【问题讨论】:

  • 请注意,在这种情况下,从技术上讲,您不是在追加 - 元组是不可变的,您正在那里创建一个新元组。
  • 如果你需要能够扩展一个元组,你确定它应该是一个元组而不是一个列表吗?

标签: python append tuples


【解决方案1】:

[请看下面的说明]

这也应该有效:

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),) 的优先级可能低于其他运算符。

【讨论】:

  • Python 7.4?!我要!! :)
  • 我太新了,没有事先尝试过就发布解决方案,哈哈
  • 但是说真的,您确实在您的系统上尝试过但没有成功?
  • 你确定吗?这是我得到的:
  • 哦,奇怪。 x+(0,0), 的计算结果与 x+=(0,0), 不同。
【解决方案2】:

在 python 中,((0,0))(0,0) 是相等的:

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

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

【讨论】:

    【解决方案3】:
    >>> 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))
    

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

    【讨论】:

      【解决方案4】:

      添加一个额外的括号:

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

      注意结尾的逗号。这将使您向其中添加一个新的对元组。

      另外,请注意:这是 not 附加的,因为元组是不可变的。您正在创建一个全新的元组。

      希望这会有所帮助!

      【讨论】:

        【解决方案5】:
        x + ((0,0),)
        

        应该给你

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

        Python 对单元素元组有一种奇怪的语法:(x,) 它显然不能只使用(x),因为那只是括号中的x,因此语法很奇怪。使用 ((0, 0),),我将您的 4 元组对与 1 元组连接,而不是您在 (0, 0) 中的 2 元组整数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-04
          • 2021-07-04
          • 2011-03-17
          • 1970-01-01
          • 2018-08-18
          • 2014-02-24
          • 1970-01-01
          相关资源
          最近更新 更多