在Python中为多个变量添加多个返回值

时间:2017-05-05 11:10:15

标签: python

勘定

我是Python的新手,但我已经知道使用所谓的元组可以分配和返回多个值。

一次分配多个值

> a, b = 1, 2
> a
1
> b
2

返回多个值

> def f():
>   return 3, 4
>
> f()
(3, 4)

两者合并也有效

> c, d = f()
> c
3
> d
4

添加

要隐式向变量添加返回值,可以使用重载的运算符+=iadd)。

添加运算符+=(分别称为iadd

> e = 5
> e += 5
> e
10

也适用于功能

> def g():
>   return 10
>
> e += g()
> e
20

问题

我是对的,上述行为不能一起使用吗? 我尝试了以下代码片段,但它对我不起作用。

> x, y = 1, 2
> x, y += 3, 4
SyntaxError: illegal expression for augmented assignment

> def z():
>   return 10, 100
> x, y += z()
SyntaxError: illegal expression for augmented assignment

直到现在,Python才是真正的直觉。这就是为什么我认为方法可以开箱即用。

为什么+=运算符没有为元组重载?让Python变得如此简单是否有意义?

我找到了两种方法来解决这个“问题”(使用上面的xyz()

> import operator
> t = x, y
> tuple(map(operator.add, t, z()))

或保持简单(使用上面的xyz()

> x1, y1 = z()
> x += x1
> y += y1

除了我提到的方法之外,还有更好甚至更直观的方法吗?

1 个答案:

答案 0 :(得分:2)

我喜欢 list-comprehensions 。学习python,这肯定是你要研究的东西:

def add_for_all(sum1, sum2):
  return [j+sum2[i] for i,j in enumerate(sum1)]

wx = [1,2]
yz = [3,4]

print (add_for_all(wx, yz))