2014-07-26 51 views
1

如何在元組內單獨添加元素?如何在元組中單獨添加元素?

例如,我需要(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) 

回答

3

您可以使用zipsum這裏:

例子:

>>> x = (0, 1) 
>>> y = (2, 3) 
>>> tuple(map(sum, zip(x, y))) 
(2, 4) 
  • zip讓我們結合兩個iterables或列表的元素對。
  • sum讓我們總結了對
  • map讓我們每對應用sum功能。
  • finally我們將得到的列表(或可在Python 3.x中迭代)轉換回tuple,因爲這就是您似乎想要的。

上面的例子基本上結束了;

(0 + 2, 1 + 3) 
+2

+1但是這會創建一個列表;來代替確切的結果OP要它必須是'tuple(map(sum,zip(x,y)))'' –

2

你自己的解決方案是在純python中做到這一點的正確方法。

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

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

您應該只將數據convet回一個元組,如果你真的需要它作爲一個元組。否則,leave是一個numpy數組,這意味着你可以稍後向它應用更多的向量化操作。

此外,第二次轉換爲np.asarray是可選的。第一個就足夠了(其他轉換是由numpy自動完成的)。