Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在元组中单独添加元素?_Python_List_Tuples_Addition - Fatal编程技术网

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

Python 如何在元组中单独添加元素?,python,list,tuples,addition,Python,List,Tuples,Addition,如何在元组中单独添加元素 例如,我需要(2,4)从(0,1)+(2,3),我已经这样做了,但是否有一种更具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) 您可以在此处使用zip和sum: 示例: >>> x = (0,

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

例如,我需要
(2,4)
(0,1)
+
(2,3)
,我已经这样做了,但是否有一种更具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)

您可以在此处使用
zip
sum

示例:

>>> x = (0, 1)
>>> y = (2, 3)
>>> tuple(map(sum, zip(x, y)))
(2, 4)
  • zip
    允许我们成对地组合两个iterable或list的元素
  • sum
    让我们对这些对求和
  • map
    允许我们对每对应用
    sum
    函数
  • 最后,我们将结果列表(或Python3.x中的iterable)转换回
    元组,因为这似乎是您想要的
上面的例子基本上是:

(0 + 2, 1 + 3)

您可以在此处使用
zip
sum

示例:

>>> x = (0, 1)
>>> y = (2, 3)
>>> tuple(map(sum, zip(x, y)))
(2, 4)
  • zip
    允许我们成对地组合两个iterable或list的元素
  • sum
    让我们对这些对求和
  • map
    允许我们对每对应用
    sum
    函数
  • 最后,我们将结果列表(或Python3.x中的iterable)转换回
    元组,因为这似乎是您想要的
上面的例子基本上是:

(0 + 2, 1 + 3)

您自己的解决方案是在纯python中实现这一点的正确方法

如果要避免循环,可以使用
numpy
对操作进行矢量化:

import numpy as np
tuple( np.asarray(tup1) + np.asarray(tup2) )
如果确实需要将数据转换为元组,则只应将其转换回元组。否则,leave将作为numpy数组,这意味着您以后可以对其应用更多矢量化操作


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

在纯python中,您自己的解决方案是正确的方法

如果要避免循环,可以使用
numpy
对操作进行矢量化:

import numpy as np
tuple( np.asarray(tup1) + np.asarray(tup2) )
如果确实需要将数据转换为元组,则只应将其转换回元组。否则,leave将作为numpy数组,这意味着您以后可以对其应用更多矢量化操作


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

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

import numpy as np 

x = (0,1)
y = (2,3)

z = np.array(x) + np.array(y)
z = tuple(z)

z
(2, 4)

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

import numpy as np 

x = (0,1)
y = (2,3)

z = np.array(x) + np.array(y)
z = tuple(z)

z
(2, 4)

+1但这会创建一个列表;要重新计算OP想要的确切结果,它必须是
元组(map(sum,zip(x,y))
+1,但这会创建一个列表;要重新计算OP想要的确切结果,它必须是
tuple(map(sum,zip(x,y)))