【发布时间】:2020-08-08 10:13:42
【问题描述】:
我在尝试交换数组元素时遇到了一种奇怪的行为。
初始状态
i = 1
nums = [0, 1]
什么没用
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
print(nums) # [0, 1]
什么有效
nums[nums[i]-1], nums[i] = nums[i], nums[nums[i]-1]
print(nums) # [1, 0]
我认为这两个表达式应该具有相同的结果,因为首先评估赋值的右侧。
在 macOS Catalina 10.15.4 上的 Python 2.7.16 和 Python 3.7.6 上测试。
注意:nums[1], nums[0] = nums[0], nums[1] 和 nums[0], nums[1] = nums[1], nums[0] 按预期工作。
【问题讨论】:
-
你为什么不这样交换? 'nums[i], nums[i-1] = nums[i-1], nums[i]'
-
@Mace 这只是一个例子。要交换的元素可能在数组中的任何位置。我将其用作循环排序的一部分。
-
我明白了。谢谢。
标签: python python-2.7 python-3.7