列表是python經常使用的一種變量。 是由一些列按照特定順序排列的元素組成的。你能夠建立包含字母表中的全部字母,數字。能夠將任何東西都加入到列表中。python
一般狀況下,列表中都包含多個元素,因此建議變量的名稱以複數的形式來表示,好比 foods, names, cars。app
在Python中,咱們用方括號 [] 來表示列表,使用逗號來進行元素分隔:ide
names = ["Ralf", "Rachel", "clark"] print(names) # 輸出: ['Ralf', 'Rachel', 'clark']
和字符串類型變量相相似,咱們可使用索引來訪問list中的變量,索引從0 開始計數: 函數
names = ['Ralf', 'Rachel', 'clark'] print(names[0]) print(names[2]) print(names[-1]) print(names[3]) # 輸出: ralf # 輸出: clark # 輸出: clark # 輸出: IndexError: list index out of range
大多數定義的列表都是動態的,這意味着列表建立後,將隨着程序的運行增減元素。spa
能夠根據索引定位直接修改列表元素:指針
names = ['Ralf', 'Rachel', 'clark'] print(names[1]) names[1] = 'Terry' print(names[1]) # 輸出: Rachel # 輸出: Terry
添加元素到list中,咱們可使用list的內置函數來實現:code
names = ['Ralf', 'Rachel', 'clark'] """ 在List末尾插入一個數值""" names.append('Terry') print(names) # 輸出: ['Ralf', 'Rachel', 'clark', 'Terry'] """ 在首位置插入一個數值""" names.insert(0, 'LEONA') print(names) # 輸出: ['LEONA', 'Ralf', 'Rachel', 'clark', 'Terry']
刪除列表中的元素主要有如下幾種方法: del,pop(), removeblog
names = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry'] """ 刪除List中的第二個值 Rachel""" del names[1] print(names) # 輸出: ['Ralf', 'Clark', 'Leona', 'Terry'] """ pop()會從列表中取出最後的一個值,並將該元素從list中刪除""" pop_name = names.pop() print(pop_name) print(names) # 輸出: # Terry # ['Ralf', 'Clark', 'Leona'] """ pop()也能夠從指定位置處取值和刪除元素""" pop_name = names.pop(2) print(pop_name) print(names) # 輸出: # Leona # ['Ralf', 'Clark'] """ 使用remove()根據值來刪除元素""" names.remove('Clark') print(names) # 輸出:['Ralf'] """ 注意remove()只會刪除一個元素,若是list存在重複的值,那麼只會刪除第一個匹配的值""" names2 = ['Ralf', 'Clark', 'Clark', 'Leona', 'Terry'] names2.remove('Clark') print(names2) # 輸出:['Ralf', 'Clark', 'Leona', 'Terry']
列表排序,咱們能夠永久或者臨時性的對list進行排序,使用sort和sorted方法:排序
names = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry'] """ 使用sorted()函數臨時排序list中的元素""" print(sorted(names)) print(sorted(names, reverse = True)) print(names) #輸出: #['Clark', 'Leona', 'Rachel', 'Ralf', 'Terry'] #['Terry', 'Ralf', 'Rachel', 'Leona', 'Clark'] #['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry'] """使用list內置函數sort()實現元素的排序的永久化""" print(names) names.sort() print(names) #輸出: #['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry'] #['Clark', 'Leona', 'Rachel', 'Ralf', 'Terry']
肯定列表的長度,咱們可使用len()函數來實現索引
names = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry'] """ 使用len()函數來獲得list中的元素的個數""" print(len(names)) #輸出: 5
遍歷整個列表,咱們可使用循環的形式遍歷整個列表中的元素:
""" 使用For循環遍歷整個List中的元素""" for name in names: print(name) #輸出: Ralf #Rachel #Clark #Leona #Terry
列表切片, List和string相相似,都支持索引和切片方式的取值。咱們可使用[start:end:step]的方式對列表中的元素進行讀取操做。注意start從0開始,第end個元素不包含在操做中。
names = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry'] """取出list中下標1到2的元素""" print(names[1:3]) #輸出: ['Rachel', 'Clark'] """取出list中下表從開始到3的元素""" print(names[:4]) #輸出: ['Ralf', 'Rachel', 'Clark', 'Leona'] """從下標0開始每格兩個取一次值""" print(names[::2]) #輸出: ['Ralf', 'Clark', 'Terry']
List列表也支持複數的取值,表示從後往前取值:
names = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry'] """取出list中倒數第三個到末尾的全部元素""" print(names[-3:]) #輸出: ['Clark', 'Leona', 'Terry'] """從List末尾取出全部元素""" print(names[::-1]) #輸出: ['Terry', 'Leona', 'Clark', 'Rachel', 'Ralf'] """取出從下標0開始到倒數第三個元素前的全部元素""" print(names[:-3:]) #輸出: ['Ralf', 'Rachel']
注意: list切片返回的結果任然是一個列表(List)。
列表的複製。咱們嘗試使用賦值的形式複製一張新的列表,發現其不能正確的工做:
names1 = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry'] names2 = names1 names1.append('Heidern') print(names1) print(names2) #輸出: ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry', 'Heidern'] ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry', 'Heidern']
咱們發現,兩個list發生了相同的變化。這是由變量特性決定, python是一種地址指向。names定義了變量的值後,這些數值存儲到內存中,names做爲變量,其指針指向了存儲這些值得地址。而names2指向了names1指向的地址。所以兩個實際上指向的存儲地址是同樣的。
咱們若是想要複製列表,須要使用切片或者遍歷的方式來實現:
names1 = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry'] names2 = names1[:] names1.append('Heidern') print(names1) print(names2) #輸出: ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry', 'Heidern'] ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']