今天是Andy学Python的第45 天哦!
大家好,我是Andy。
01.
项目需求
旋转列表,就是把列表循环左移k位。
如:输入a = [1, 2, 3, 4, 5, 6],旋转左移3位,输出[4, 5, 6, 1, 2, 3]
02.
拆解任务
2.1所谓循环左移1位,就是先把列表最左端的元素取出,再把这个元素追加到列表的末尾。
采用pop(0)方法取出列表首个元素,采用append()方法,再将取出元素追加到列表末尾。
2.2循环左移k位,采用循环结构,每次将列表首位元素取出放到末尾,一共循环k-1次。
03.
代码实现
3.1版本1.0
# 旋转列表
# Andy 2021-04-01
def rotate_list(list_a, k):
temp = list_a[:] # 切片,不影响原列表
for i in range(k):
temp.append(temp.pop(0)) # 把左端的元素追加到列表末尾
return temp
# 主函数
list1 = [1, 2, 3, 4, 5, 6]
print(rotate_list(list1, 3))
该方法使用循环结构,采用pop(0)方法将列表第1位元素删除,再用append()方法追加到列表尾部。每循环1次,都会引起列表其余元素前移1位,如是列表中元素较多,会导致效率低下。
尝试采用切片方式,不引起原列表元素重新移位排序,速度会更快。
3.2
版本2.0
# 旋转列表
# Andy 2021-04-01
def rotate_list(list_a, k):
return list_a[k:] + list_a[:k] # 切片,将原列表一分为二,再拼接
# 主函数
list1 = [1, 2, 3, 4, 5, 6]
print(rotate_list(list1, 3))
51Day Day up!
向上向善,日进一步!
每天学习,努力成长!
定个小目标,开启成长的旅程,遇见更好的自己。
这是我们和自己的约定,许诺自己不负韶华。
路虽远,行则将至;事虽难,做则必成。
成长的最好时机,就是当下。