如何添加元组

fpo*_*bin 8 python algorithm tuples

我有这样的伪代码:

if( b < a)
   return (1,0)+foo(a-b,b)
Run Code Online (Sandbox Code Playgroud)

我想用python编写它.但python可以添加元组吗?编写类似代码的最佳方法是什么?

Dmi*_*kov 13

我会去的

>>> map(sum, zip((1, 2), (3, 4)))
[4, 6]
Run Code Online (Sandbox Code Playgroud)

或者,更自然地:

>>> numpy.array((1, 2)) + numpy.array((3, 4))
array([4, 6])
Run Code Online (Sandbox Code Playgroud)


hig*_*dth 11

你想做元素添加,还是附加元组?默认情况下python可以

(1,2)+(3,4) = (1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

您可以将自己定义为:

def myadd(x,y):
     z = []
     for i in range(len(x)):
         z.append(x[i]+y[i])
     return tuple(z)
Run Code Online (Sandbox Code Playgroud)

另外,正如@ delnan的评论所表明的那样,这更好地写成了

def myadd(xs,ys):
     return tuple(x + y for x, y in izip(xs, ys))
Run Code Online (Sandbox Code Playgroud)

甚至更多功能:

myadd = lambda xs,ys: tuple(x + y for x, y in izip(xs, ys))
Run Code Online (Sandbox Code Playgroud)

然后做

if( b < a) return myadd((1,0),foo(a-b,b))
Run Code Online (Sandbox Code Playgroud)

  • `tuple(x + y代表x,y代表izip(xs,ys))`. (4认同)
  • 如果元组的长度不同,你的`myadd`会默默地将较长的元组截断为较短的长度.这可能是也可能不是问题. (2认同)