问题:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数。
方法1:利用切片功能
#!/usr/bin/python
#coding:utf-8
#author:菜就多练呀
def shift_numbers(arr, m):
if len(arr) < m:
raise ValueError("m 值大于数组长度")
return arr[-m:] + arr[:-m]
# 示例
n = 5#数组个数
m = 3#移动个数
original_arr = [1, 2, 3, 4, 5]
new_arr = shift_numbers(original_arr, m)
print(f"原始数组:{original_arr}")
print(f"移位后的数组:{new_arr}")
方法2:使用numpy库的roll方法
#!/usr/bin/python
#coding:utf-8
#author:菜就多练呀
import numpy as np
array = np.array([1, 2, 3, 4, 5])
shifted_array = np.roll(array, 3)
print(f"原始数组:{array}")
print(f"移位后的数组:{shifted_array}")
注:roll()函数可以沿指定轴滚动数组元素。它接受一个数组和移位数(正值表示向右移,负值表示向左移),然后返回移位后的数组。
输出结果:
原始数组:[1, 2, 3, 4, 5]
移位后的数组:[3, 4, 5, 1, 2]