今天是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!
向上向善,日進一步!
每天學習,努力成長!
定個小目標,開啓成長的旅程,遇見更好的自己。
這是我們和自己的約定,許諾自己不負韶華。
路雖遠,行則將至;事雖難,做則必成。
成長的最好時機,就是當下。