我是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变得如此简单是否有意义?
我找到了两种方法来解决这个“问题”(使用上面的x
,y
,z()
:
> import operator
> t = x, y
> tuple(map(operator.add, t, z()))
或保持简单(使用上面的x
,y
,z()
:
> x1, y1 = z()
> x += x1
> y += y1
除了我提到的方法之外,还有更好甚至更直观的方法吗?
答案 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))