【问题标题】:Concatenating nested tuples连接嵌套元组
【发布时间】:2012-03-13 10:31:21
【问题描述】:

给定两个变量

A = (2, 3)
B = (1, 4), (5, 8)

将两者连接成结果变量C的最简单方法是什么,以便:

C = ((2, 3), (1, 4), (5, 8))

请注意,只需调用:

C = A + B 

结果:

C = (2, 3, (1, 4), (5, 8))

不是想要的结果。

此外,请注意,首选元组代替列表,以便 ABC 可以在其他地方用作字典键。

【问题讨论】:

    标签: python nested tuples concatenation


    【解决方案1】:

    我会说你可能意味着 A 元组也是一个嵌套元组:

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

    【讨论】:

    • 你是对的,尽管我从 larsmans 的原始答案(他现在已经改变)中推断出这一点。我想我应该给你打勾,让你成为第一个明确说明它的人?不过,你们俩都上船了……
    【解决方案2】:

    那是

    (A,) + B
    

    注意B 已经是一个嵌套元组,而(A,) 从平面元组A 构造一个。

    【讨论】:

      【解决方案3】:

      如果您想要更多控制权,请考虑使用列表。如果A 是一个嵌套元组,那么这样做很容易:

      >>> A = (2, 3),
      >>> B = (1, 4), (5, 8)
      >>> A + B
      ((2, 3), (1, 4), (5, 8))
      

      【讨论】:

      • 输入不是A = (2, 3),它是A = (2,3)
      • 我试图暗示 A 也应该是一个嵌套元组,但由于每个人都在我之前得到了答案,我认为这不值得继续。
      【解决方案4】:

      下面的代码可能会有所帮助

      >>> A = (2, 3)
      >>> B = (4, 5)
      >>> C = (A,) + B
      >>> C
      ((2, 3), (1, 4), (5, 8))
      

      【讨论】:

      • 这个是对的,但是和Fred Foo的回答基本一样。
      【解决方案5】:

      试试这个

      tuple1 = (1,2,3)
      tuple2 = ('a', 'b','c')
      
      nestedTuple = (tuple1,) + (tuple2,)
      print(nestedTuple)
      

      【讨论】:

        【解决方案6】:

        您可以使用* spready 语法:

        C = (A, *B)
        

        这将在结果中传播 B 的嵌套元组,但 A 将按原样处理。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-10
          • 2013-11-28
          • 2019-07-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-31
          • 2021-03-17
          • 2013-04-01
          相关资源
          最近更新 更多