Wil*_*mKF 310 python syntax swap conventions
在Python中,我看到使用这种语法交换了两个变量值:
left, right = right, left
Run Code Online (Sandbox Code Playgroud)
这被认为是交换两个变量值的标准方法,还是有一些其他方法可以按惯例最常交换两个变量?
eyq*_*uem 352
Python从左到右评估表达式.请注意,在评估分配时,右侧在左侧之前进行评估.
http://docs.python.org/3/reference/expressions.html#evaluation-order
这意味着以下表达式a,b = b,a:
b,a评估右侧,也就是说在内存中创建了两个元素的元组.两个元件是由标识符指定的对象b和a,程序的执行期间,该指令被encoutered之前已存在a分配给元组的第一个元素(这是因为它具有名称
而在交换之前为b的对象b)b被分配给元组的第二个元素(其是前身对象一个交换之前,因为它的标识符是a)这种机制有效地交换了分配给标识符的对象a和b
所以,回答你的问题:是的,这是在两个对象上交换两个标识符的标准方法.
顺便说一下,对象不是变量,它们是对象.
NoO*_*ere 35
我知道三种交换变量的方法,但a, b = b, a最简单.有
x = x ^ y
y = y ^ x
x = x ^ y
Run Code Online (Sandbox Code Playgroud)
或者简洁地说,
x ^= y
y ^= x
x ^= y
Run Code Online (Sandbox Code Playgroud)
w = x
x = y
y = w
del w
Run Code Online (Sandbox Code Playgroud)
x, y = y, x
Run Code Online (Sandbox Code Playgroud)
小智 17
我不会说它是一种标准的交换方式,因为它会导致一些意外错误.
nums[i], nums[nums[i] - 1] = nums[nums[i] - 1], nums[i]
Run Code Online (Sandbox Code Playgroud)
nums[i]将首先修改然后影响第二个变量nums[nums[i] - 1].
不适用于多维数组,因为此处使用了引用。
import numpy as np
# swaps
data = np.random.random(2)
print(data)
data[0], data[1] = data[1], data[0]
print(data)
# does not swap
data = np.random.random((2, 2))
print(data)
data[0], data[1] = data[1], data[0]
print(data)
Run Code Online (Sandbox Code Playgroud)
另请参阅交换 Numpy 数组的切片
| 归档时间: |
|
| 查看次数: |
193825 次 |
| 最近记录: |