小白學 Python(10):基礎數據結構(列表)(下)

人生苦短,我選Pythonpython

前文傳送門git

小白學 Python(1):開篇github

小白學 Python(2):基礎數據類型(上)數據結構

小白學 Python(3):基礎數據類型(下)app

小白學 Python(4):變量基礎操做spa

小白學 Python(5):基礎運算符(上)3d

小白學 Python(6):基礎運算符(下)code

小白學 Python(7):基礎流程控制(上)cdn

小白學 Python(8):基礎流程控制(下)對象

小白學 Python(9):基礎數據結構(列表)(上)

列表切片

一說到列表切片不知道各位同窗有沒有想起來前面咱們講過的字符串切片,沒想起來的同窗爲本身的記憶默哀 3 秒鐘吧。

開個玩笑:)能夠返回去看看以前的文章。

列表切片是指將列表其中的一部分切出來。

語法: list[起始索引:終止索引:步長間隔]

注意: 這裏的終止索引和字符串切片是同樣的,並不會取到。

下面直接上代碼,解析已經添加在註釋中。

其實我就是懶,不想一條一條拆開寫了,來打我呀~~~

list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 省略步長時默認爲 1
print(list1[3:8])
# 步長爲 2
print(list1[3:8:2])
# 從索引 3 開始取到最後
print(list1[3:])
# 從頭開始取,取到索引 8 ,而且索引 8 娶不到
print(list1[:8])
# 取全部,步長爲 3
print(list1[::3])
# 從索引 1 開始,取到倒數第 2 個,而且倒數第 2 個 取不到
print(list1[1:-2])
# 取全部
print(list1[:])
# 取逆序列表
print(list1[::-1])
# 取逆序,而且步長爲 2
print(list1[8:1:-2])複製代碼

執行結果以下:

[3, 4, 5, 6, 7]
[3, 5, 7]
[3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 3, 6, 9]
[1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[8, 6, 4, 2]複製代碼

列表經常使用方法

咱們這裏分別演示一下:

list.append(obj)

在列表末尾添加新的對象

list1.append("Python")
print(list1)複製代碼

結果以下:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Python']複製代碼

list.count(obj)

統計某個元素在列表中出現的次數

list2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

list2.append("Python")
list2.append("Python")
list2.append("Python")
list2.append(1)
print(list2.count("Python"))
print(list2.count(1))複製代碼

結果以下:

3
2複製代碼

咱們這裏分別統計了字符串 "Python" 和數字 1 出現的次數。

list.extend(seq)

在列表末尾一次性追加另外一個序列中的多個值(用新列表擴展原來的列表)

list1.extend(list2)

print(list1)複製代碼

結果以下:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Python', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Python', 'Python', 'Python', 1]複製代碼

能夠看到 list1 在通過 list2 的擴展後,同時含有了 list1 和 list2 的全部數據。

extend 和 append 很是像,可是 extend 一次能夠添加一個列表,而 append 一次只能添加一個元素。

list.index(obj)

從列表中找出某個值第一個匹配項的索引位置

print(list1.index("Python"))複製代碼

結果以下:

10複製代碼

list.insert(index, obj)

將對象插入列表

index 是插入的索引值, obj 是要插入的元素。

list1.insert(0, "Hello")
print(list1)

list3 = [0, 1, 2]
list4 = [2, 2]
list3.insert(1, list4)
print(list3)複製代碼

結果以下:

['Hello', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Python', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Python', 'Python', 'Python', 1]
[0, [2, 2], 1, 2]複製代碼

固然插入時能夠是一個單獨的元素,也能夠是一個列表。

list.pop([index=-1])

移除列表中的一個元素(默認最後一個元素),而且返回該元素的值

list3.pop()
print(list3)

list3.pop(1)
print(list3)複製代碼

結果以下:

[0, [2, 2], 1]
[0, 1]複製代碼

一樣在移除索引的時候,能夠移除一個元素,也能夠移除一個列表。

list.remove(obj)

移除列表中某個值的第一個匹配項

list5 = [1, 2, 3, 4, 4, 5]
list5.remove(4)
print(list5)複製代碼

結果以下:

[1, 2, 3, 4, 5]複製代碼

list.reverse()

反向列表中元素

list5.reverse()
print(list5)複製代碼

結果以下:

[5, 4, 3, 2, 1]複製代碼

雖然咱們剛纔用步長爲 -1 的形式一樣作到了列表逆序,可是這兩個操做是不同的。

list5 = [1, 2, 3, 4, 4, 5]
list5.remove(4)
print(list5)
print(id(list5))
list5.reverse()
print(list5)
print(id(list5))
print(id(list5[::-1]))複製代碼

結果以下:

[1, 2, 3, 4, 5]
2629333420040
[5, 4, 3, 2, 1]
2629333420040
2629333420104複製代碼

各位同窗看明白了,經過步長得到的逆序列表其實是一個新的列表,在內存的地址發生了變更,而經過 list.reverse() 打印的逆序列表仍是這個列表自己,它的內存地址並未發生改變。

list.sort( key=None, reverse=False)

對原列表進行排序

list6 = [2, 5, 1, 9, 6, 3]
list6.sort()
print(list6)
list6.sort(reverse=True)
print(list6)複製代碼

結果以下:

[1, 2, 3, 5, 6, 9]
[9, 6, 5, 3, 2, 1]複製代碼

怎麼樣,對列表進行正序和逆序排序是否是很簡單。

後面還有兩個方法 list.clear() (清空列表) 和 list.copy() (複製列表)我就不作演示,你們能夠本身動手嘗試一下,有不清楚的能夠在公衆號後臺留言問我。

示例代碼

本系列的全部代碼小編都會放在代碼管理倉庫 Github 和 Gitee 上,方便你們取用。

示例代碼-Github

示例代碼-Gitee

若是個人文章對您有幫助,請掃碼關注下做者的公衆號:獲取最新干貨推送:)
相關文章
相關標籤/搜索