Day045|Python编程300例之旋转列表

今天是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!

向上向善,日进一步!

每天学习,努力成长!

定个小目标,开启成长的旅程,遇见更好的自己。

这是我们和自己的约定,许诺自己不负韶华。

路虽远,行则将至;事虽难,做则必成。

成长的最好时机,就是当下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章