Python 为什么';元组上的加法广播?

Python 为什么';元组上的加法广播?,python,tuples,Python,Tuples,例如,为什么我不能: (0,1) + (2,2) 并获得: (2,3) 因此?这是因为您添加了两个元组,并对元组执行了+操作,将它们连接起来!您可以为此使用和函数: >>> map(sum,zip((0,1),(2,2))) [2, 3] 或使用发电机: >>> tuple(i+j for i,j in zip((0,1),(2,2))) (2, 3) 以及使用运算符的更好方法。添加: >>> from operator import

例如,为什么我不能:

(0,1) + (2,2)
并获得:

(2,3)

因此?

这是因为您添加了两个元组,并对元组执行了
+
操作,将它们连接起来!您可以为此使用和函数:

>>> map(sum,zip((0,1),(2,2)))
[2, 3]
或使用发电机:

>>> tuple(i+j for i,j in zip((0,1),(2,2)))
(2, 3)
以及使用
运算符的更好方法。添加

>>> from operator import add
>>> map(add,(0,1),(2,2))
[2, 3]

这是因为您添加了两个元组,并对元组执行了
+
操作将它们连接起来!您可以为此使用和函数:

>>> map(sum,zip((0,1),(2,2)))
[2, 3]
或使用发电机:

>>> tuple(i+j for i,j in zip((0,1),(2,2)))
(2, 3)
以及使用
运算符的更好方法。添加

>>> from operator import add
>>> map(add,(0,1),(2,2))
[2, 3]

因为Python认为元组是不可变的列表,所以添加两个元组就像添加两个列表一样。因此,正如添加两个列表将它们连接起来一样:

>>> [1, 2] + [3, 4]
[1, 2, 3, 4]
>>> (1, 2) + (3, 4)
(1, 2, 3, 4)
添加两个元组也将连接它们:

>>> [1, 2] + [3, 4]
[1, 2, 3, 4]
>>> (1, 2) + (3, 4)
(1, 2, 3, 4)
您可以创建一个新的元组,该元组由每个元组对的总和和一些Python内置函数组成:

>>> tuple(map(sum, zip((0, 1), (2, 2))))
(2, 3)
这通过在两个元组上使用来创建对列表:

>>> zip((0, 1), (2, 2))
[(0, 2), (1, 2)]
并使用应用于该列表的每个元素,以获得一个总和列表:

>>> map(sum, zip((0, 1), (2, 2)))
[2, 3]

最后,使用将列表转换为元组。

由于Python认为元组是不可变的列表,添加两个元组就像添加两个列表一样。因此,正如添加两个列表将它们连接起来一样:

>>> [1, 2] + [3, 4]
[1, 2, 3, 4]
>>> (1, 2) + (3, 4)
(1, 2, 3, 4)
添加两个元组也将连接它们:

>>> [1, 2] + [3, 4]
[1, 2, 3, 4]
>>> (1, 2) + (3, 4)
(1, 2, 3, 4)
您可以创建一个新的元组,该元组由每个元组对的总和和一些Python内置函数组成:

>>> tuple(map(sum, zip((0, 1), (2, 2))))
(2, 3)
这通过在两个元组上使用来创建对列表:

>>> zip((0, 1), (2, 2))
[(0, 2), (1, 2)]
并使用应用于该列表的每个元素,以获得一个总和列表:

>>> map(sum, zip((0, 1), (2, 2)))
[2, 3]

最后,使用将其从列表转换为元组。

因为
+
运算符用于生成一个新的元组,该元组是其他两个元组的组合。Python就是这样设计的

要执行您想要的操作,您可以使用和:


因为
+
操作符用于生成一个新的元组,该元组是其他两个元组的组合。Python就是这样设计的

要执行您想要的操作,您可以使用和:


“+”运算符连接元组。如果要对元组项求和,可以使用:

tuple(sum(x) for x in zip((0,1),(2,2)))


“+”运算符连接元组。如果要对元组项求和,可以使用:

tuple(sum(x) for x in zip((0,1),(2,2)))


元素加法是一种比串联更专门的操作。可以将更少的元组添加到一起:
('a','b')+(1,2,)
等于什么? 或者
('a','b')+(1,2,3)


由于串联可以说是更常见的操作,而且更重要的是,对所有元组都有很好的定义,因此元组的加法执行串联是有意义的。

元素级加法是比串联更专门的操作。可以将更少的元组添加到一起:
('a','b')+(1,2,)
等于什么? 或者
('a','b')+(1,2,3)


由于串联可以说是更普遍需要的操作,而且重要的是,对所有元组都有很好的定义,添加元组执行连接是有意义的。

简单答案-这就是为元组定义+运算符的方式您可以使用
复杂的
。请参阅。因为这样您就不能使用
+
连接元组了。对。。。是的,我忘了。实际上,我试图使用元组的减法和-,这只是没有定义。答案很简单-这就是为元组定义+运算符的方式。您可以使用
complex
。请参见。因为这样您就无法使用
+
连接元组。对。。。是的,我忘了。我实际上是在尝试使用元组的减法-,它只是没有定义。