Я написал простой код: два переставить два элемента в списке, используя самый базовый c:
a, b = b, a
код выглядит так:
nums[i], nums[nums[i] - 1] = nums[nums[i] - 1], nums[i]
выше swap приводит к бесконечному l oop, где элементы дублируются в списке, что не позволяет поменять местами. Но изменение его на следующее работает:
nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1]
Своп не работает из-за порядка переменных для обмена.
Если да, то насколько это логично? Что мне не хватает?