Разберитесь с свопингом в Python: почему a, b = b, a не всегда эквивалентно b, a = a, b?Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Разберитесь с свопингом в Python: почему a, b = b, a не всегда эквивалентно b, a = a, b?

Сообщение Гость »


Как мы все знаем, питонический способ поменять местами значения двух элементов and is

Код: Выделить всё

a, b = b, a
and it should be equivalent to

Код: Выделить всё

b, a = a, b
However, today when I was working on some code, I accidentally found that the following two swaps give different results:

Код: Выделить всё

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]
What is happening here? I thought in a Python swap the two assignments happen simultaneously and independently.

See also Multiple assignment and evaluation order in Python regarding the basic semantics of this kind of assignment.
See also Multiple assignment semantics regarding the effect and purpose of parentheses on the left-hand side of a multiple assignment.


Источник: https://stackoverflow.com/questions/681 ... t-to-b-a-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Считайте байты с последовательного устройства (и разберитесь в них??)
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Какое выражение в Python эквивалентно `0x1.0p-53`?
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Что эквивалентно SetFill и Setw C ++ в Python? [дублировать]
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Эквивалентно `pip install -r require-dev.txt` для `pyproject.toml`?
    Гость » » в форуме Python
    0 Ответы
    96 Просмотры
    Последнее сообщение Гость
  • Как получить все уведомления с помощью React-Native-Push-Notifications на Android, что эквивалентно PushNotificationIOS
    Anonymous » » в форуме Android
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»