PYTHON
打开JUPYTER NOTEBOOK,新建一个空白的PY文档。
nums = [3,2,2,3]val = 3for i in range(5, 0, -1): print(i)首先我们要理解反向范围。
nums = [3,2,2,3]val = 3for i in range(5, -1, -1): print(i)注意第二个元素我们这里应该用-1。
nums = [3,2,2,3]val = 3j = -1for i in range(len(nums), -1, -1): if nums[i] == val: temp = nums[i] nums[i] = nums[j] nums[j] = temp j -= 1print(nums)这里超了范围,因为会忽略了第一个元素。
nums = [3,2,2,3]val = 3j = -1for i in range(len(nums)-1, -1, -1): if nums[i] == val: temp = nums[i] nums[i] = nums[j] nums[j] = temp j -= 1print(nums)LEN要-1.
nums = [3,2,2,3]val = 3j = -1for i in range(len(nums)-1, -1, -1): if nums[i] == val: temp = nums[i] nums[i] = nums[j] nums[j] = temp j -= 1print(nums)print(j)如果我们要返回长度,这样就会出错了。
for i in range(0, -3, -1): print(i)len(range(0, -3, -1))理解一下目前的范围。
nums = [3,2,2,3]val = 3j = -1for i in range(len(nums)-1, -1, -1): if nums[i] == val: temp = nums[i] nums[i] = nums[j] nums[j] = temp j -= 1print(nums)print(len(range(0, j, -1)) - 1)即使这样写也是错误的。
nums = [3,2,2,3]val = 3j = len(nums) - 1for i in range(len(nums)-1, -1, -1): if nums[i] == val: temp = nums[i] nums[i] = nums[j] nums[j] = temp j -= 1print(nums)print(j + 1)因为不要把j从-1开始,要用正数。
nums = [3,2,2,3]val = 3j = len(nums) - 1for i in range(len(nums)-1, -1, -1): if nums[i] == val: nums[i], nums[j] = nums[j], nums[i] j -= 1print(nums)print(j + 1)这样书写会更加人性化。
注意范围的正序和倒序