一、思路
逐个数据取出来,依次赋值,或者整体取出来整体赋值
Python中numpy数组切片:print(a[0::2])、a[::2]、[:,2]、[1:,-1:]、a[::-1]、[ : n]、[m : ]、[-1]、[:-1]、[1:]等的含义(详细)
二、输出结果
三、代码实现
- 颠倒列表弹出添加元素
def rotate(nums, k):
if len(nums) < 2:
return
#对数组进行翻转,为首端添加数据使用append做铺垫
nums.reverse()
k = k % len(nums) #避免k大于nums的长度
while k > 0:
#翻转后的数组,第一个数据即为原数组的最后一个数据
temp = nums.pop(0)
#翻转后的数组,末尾追加数据即为给头部添加数据
nums.append(temp)
k -= 1
#翻转结束后需要翻转回来
nums.reverse()
return
- 逐个移动元素
def rotate(nums, k):
if len(nums) < 2:
return
k = k % len(nums)
while k > 0:
#将最后一个数据保存到变量中
temp = nums[-1]
rrr = nums[:-1]
#将数组整体往后移动一位,此时nums[:-1]表示从开始到倒数第二位
#nums[1:]表示从1到最后一位
nums[1:] = nums[:-1]
print(nums)
nums[0] = temp
k -= 1
return
- 整体移动元素块
def rotate(nums, k):
if len(nums) < 2:
return
#此处表示判断nums数组的长度是否大于k
#len(nums)>k,则返回k值
k = k % len(nums)
#获取数组后面k个数据
temp = nums[len(nums) - k:] # 5, 6, 7
#获取数组1-5的数据放至[3:]中
nums[k:] = nums[:len(nums) - k]
#把最后的3个数据赋值给数组前3为位
nums[:k] = temp
return
if __name__ == "__main__":
nums = [1, 2, 3, 4, 5, 6, 7]
k = 3
print("before nums = %s" %nums)
rotate(nums, k)
print("after nums = %s" %nums)