列表后移问题
问题描述:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
问题分析:解决这个问题的关键在于对列表结构的理解,对元素进行移位操作。一方面,可以从列表元素出发,先把最后m个元素打印出来,再将前面(n-m)个元素打印出来。另一个思路是从列表结构出发,先将后m个元素弹出,再插入列表的前m个位置。
代码如下:
a=[10,9,8,7,6,5,4,3,2,1] #测试案例
b=[]
n=len(a)
m=int(input("请输入要移动的位数:"))
if (m>len(a)):
print("移动的位数超出列表长度!")
else:
b=a[n-m:n+1]+a[0:n-m]
print(b) #先把最后m个元素打印出来,再将前面(n-m)个元素打印出来
或者
a=[10,9,8,7,6,5,4,3,2,1] #测试案例
m=int(input("请输入要移动的位数:"))
if (m>len(a)):
print("移动的位数超出列表长度!")
for _ in range(m):
a.insert(0,a.pop()) #先将后m个元素弹出,再插入列表的前m个位置
print(a)