在Python中,我看到使用这种语法交换了两个变量值:
left, right = right, left
Run Code Online (Sandbox Code Playgroud)
这被认为是交换两个变量值的标准方法,还是有一些其他方法可以按惯例最常交换两个变量?
In [55]: a = 5
In [56]: b = 6
In [57]: (a, b) = (b, a)
In [58]: a
Out[58]: 6
In [59]: b
Out[59]: 5
Run Code Online (Sandbox Code Playgroud)
如何交换a和b的值在内部工作?它肯定不使用临时变量.
有人可以向我解释第4行是做什么的吗?
1 def fib2(n): # return Fibonacci series up to n
2 ... """Return a list containing the Fibonacci series up to n."""
3... result = []
4... a, b = 0, 1 #this line
5... while a < n:
6... result.append(a)
7... a, b = b, a+b
8... return result
Run Code Online (Sandbox Code Playgroud) 考虑多重分配x[0],y = y,x[0].应用于以下四种情况中的每一种情况,这给出了四种不同的结果.
情况1:
x = [[1,2], [3,4]]
y = [5,6]
Run Code Online (Sandbox Code Playgroud)
给
x = [[5,6], [3,4]]
y = [1,2]
Run Code Online (Sandbox Code Playgroud)案例2:
x = np.array([[1,2], [3,4]])
y = [5,6]
Run Code Online (Sandbox Code Playgroud)
给
x = array([[5,6], [3,4]])
y = array([5,6])
Run Code Online (Sandbox Code Playgroud)案例3:
x = [[1,2], [3,4]]
y = np.array([5,6])
Run Code Online (Sandbox Code Playgroud)
给
x = [array([5,6]), [3,4]]
y = [1,2]
Run Code Online (Sandbox Code Playgroud)案例4:
x = np.array([[1,2], [3,4]])
y = np.array([5,6])
Run Code Online (Sandbox Code Playgroud)
给
x = array([[5,6], [3,4]])
y = array([5,6])
Run Code Online (Sandbox Code Playgroud)看起来列表的多重分配比Numpy阵列的多重分配更智能(自动通过临时变量).
思考?
编辑:事后并不聪明......