【发布时间】:2018-05-31 19:17:04
【问题描述】:
据我所知,pythonic swap 可以写成:
a,b = b,a
list[a], list[b] = list[b], list[a]
但在我的问题中,我想交换列表中的元素,但我使用的索引是原始列表中某个索引位置的值。它的工作原理是这样的:
如果我有一个要交换的列表 nums,并且我有一个索引 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
我很困惑,请让我知道我错在哪里。
【问题讨论】:
-
为什么你用列表中的一个元素而不是
i-1来索引。我想你想要nums[i], nums[i-1] = nums[i-1], nums[i]