私たち全員が知っているように、2つの項目の値を交換するPythonic Way a
b
a, b = b, a
そしてそれは同等であるべきです
b, a = a, b
しかし、今日私がいくつかのコードに取り組んでいたとき、私は誤って次の2つのスワップが異なる結果を与えることを発見しました:
nums = [1, 2, 4, 3]
i = 2
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
print(nums)
# [1, 2, 4, 3]
nums = [1, 2, 4, 3]
i = 2
nums[nums[i]-1], nums[i] = nums[i], nums[nums[i]-1]
print(nums)
# [1, 2, 3, 4]
これは私にとっては心が強くなっています。誰かが私にここで起こったことを説明できますか?私はPythonでは、2つの課題が同時にそして独立して起こると考えました。
Thierryは良い答えを与えました、私はもっと明確にしましょう。 nums = [1, 2, 4, 3]
の場合、
このコードでは:
nums[nums[i]-1], nums[i]
このコードでは:
nums[i], nums[nums[i]-1]
おそらくgoodスワップに関する質問が使用されていました:
nums[i], nums[i-1] = nums[i-1], nums[i]
?
それを試してみてください:
>>> print(nums)
>>> [1, 2, 4, 3]
>>> nums[i], nums[i-1] = nums[i-1], nums[i]
>>> print(nums)
>>> [1, 4, 2, 3]
Ch ch