мне известно, что pythonic swap может быть записан как:
a,b = b,a
list[a], list[b] = list[b], list[a]
, но в моей проблеме я хочу поменять местами элементы в списке, но индекс, который я использую, является значением при определенномпозиция индекса в исходном списке.Это работает так:
скажем, если у меня есть список номеров, которые нужно поменять местами, и у меня есть индекс i.
nums = [-10,-3,-100,-1000,-239,1] # list to swap
i = 5 # index
, и здесь мы можем предположить
if nums[i] > 0 and nums[i]<=len(nums)
Что я ожидаю после свопинга:
[1, -3, -100, -1000, -239, -10]
следующая команда выдаст мне индекс вне диапазона ошибки:
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i] # gives list assignment out of range error
, в то время как следующая команда работает нормально:
t = nums[i]
nums[i] = nums[t-1]
nums[t-1] = t
Я в замешательстве, и, пожалуйста, дайте мне знать, где я не прав.