【问题标题】:How to add elements individually in tuple?如何在元组中单独添加元素?
【发布时间】:2014-07-26 09:08:35
【问题描述】:

如何在元组中单独添加元素?

例如,我需要来自(0,1) + (2,3)(2, 4),我一直在这样做,但有没有更pythonic/更简洁的方法来做同样的事情?

>>> x = (0,1)
>>> y = (2,3)
>>> x + y
(0, 1, 2, 3)
>>> tuple(i+j for i,j in zip(x,y))
(2, 4)

【问题讨论】:

    标签: python list tuples addition


    【解决方案1】:

    您可以在此处使用zipsum

    示例:

    >>> x = (0, 1)
    >>> y = (2, 3)
    >>> tuple(map(sum, zip(x, y)))
    (2, 4)
    
    • zip 让我们可以成对组合两个可迭代对象或列表的元素。
    • sum 让我们求和
    • map 让我们对每对应用 sum 函数。
    • 最后我们将结果列表(或 Python 3.x 中的可迭代)转换回 tuple,因为这似乎是您想要的。

    上面的例子基本上是;

    (0 + 2, 1 + 3)
    

    【讨论】:

    • +1 但这会创建一个列表;要重现 OP 想要的确切结果,它必须是 tuple(map(sum, zip(x, y)))
    【解决方案2】:

    您自己的解决方案是在纯 python 中执行此操作的正确方法。

    如果您想避免循环,可以使用numpy 向量化操作:

    import numpy as np
    tuple( np.asarray(tup1) + np.asarray(tup2) )
    

    仅当您确实需要将数据作为元组时,才应将其转换回元组。否则,leave 是一个 numpy 数组,这意味着您以后可以对其应用更多的向量化操作。

    另外,第二次转换为np.asarray 是可选的。第一个就足够了(其他转换由 numpy 自动完成)。

    【讨论】:

      【解决方案3】:

      这可能是使用 numpy 从元组中添加单个元素的更快方法:

      import numpy as np 
      
      x = (0,1)
      y = (2,3)
      
      z = np.array(x) + np.array(y)
      z = tuple(z)
      
      z
      (2, 4)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-17
        • 2019-06-04
        • 1970-01-01
        • 1970-01-01
        • 2019-03-09
        • 2020-11-05
        • 1970-01-01
        相关资源
        最近更新 更多