做者 | 弗拉德
來源 | 弗拉德(公衆號:fulade_me)python
列表,在其餘語言中又被稱爲數組,是由一系列按特定順序排列的元素組成。你能夠建立包含字母表中全部字母、數字0~9或全部家庭成員姓名的列表。你也能夠建立幾個列表,把這幾個列表又放在一個列表內。
在Python中,用方括號[]
來表示列表,並用逗號來分隔其中的元素。下面是一個簡單的列表示例,這個列表包含幾種常見的水果:git
fruits = ['Apple','Banana','Pear','Orange'] print(fruits) ['Apple','Banana','Pear','Orange']
列表是有序的數據集合,每個元素都有一個位置參數。好比上面的fruits
列表裏面,其中Apple
的位置參數是0
,Banana
位置參數是1
。要訪問列表元素,可指出列表的名稱,再指出元素的索引,並將其放在方括號內。
例如,下面的代碼從列表fruits
中選出第一種水果:github
fruits = ['Apple','Banana','Pear','Orange'] print(fruits[0]) Apple
全部的列表位置參數都是從0
開始的而不是從1開始的,對於初學者,這個必定要記牢。若是在編碼過程當中發現取出的元素跟本身預期的不同,請看看你是否犯了這種簡單的錯誤。
第二個列表元素的索引爲1。根據這種簡單的計數方式,要訪問列表的任何元素,均可將其位置減1
,並將結果做爲索引。例如,要訪問第4個列表元素,可以使用索引3
。
下面的代碼訪問索引1
和3
處的水果:數組
fruits = ['Apple','Banana','Pear','Orange'] print(fruits[1]) print(fruits[3]) Banana Orange
Python爲訪問最後一個列表元素提供了一種特殊語法。經過將索引指定爲-1
,可以讓Python返回最後一個列表元素:app
fruits = ['Apple','Banana','Pear','Orange'] print(fruits[-1]) Orange
這裏返回的是Orange
。這種語法頗有用,由於你常常須要在不知道列表長度的狀況下訪問最後的元素。
這種約定也適用於其餘負數索引,例如:索引-2
返回倒數第二個列表元素, 索引-3
返回倒數第三個列表元素,以此類推。函數
要修改列表元素,可指定列表名和要修改的元素的索引,再指定該元素的新值。
例如,假設有一個水果列表,其中的第一個元素爲Apple
,如何修改它的值呢?ui
fruits = ['Apple','Banana','Pear','Orange'] print(fruits[0]) print(fruits) Apple ['Apple','Banana','Pear','Orange'] # 開始把第一個元素修改成 Cherry fruits[0] = 'Cherry' print(fruits[0]) print(fruits) Cherry ['Cherry','Banana','Pear','Orange']
你可能出於不少緣由要在列表中添加新元素。好比商場裏又新增長了一種水果,須要在fruits
裏面中再新增一種水果。Python提供了多種在既有列表中添加新數據的方式。
1.在列表末尾添加元素
在列表中添加新元素時,最簡單的方式是將元素附加到列表末尾。編碼
fruits = ['Apple','Banana','Pear','Orange'] print(fruits) fruits.append('Cherry') print(fruits)
方法append()
將元素Cherry
添加到了列表末尾,而不影響列表中的其餘全部元素。code
['Apple','Banana','Pear','Orange'] ['Apple','Banana','Pear','Orange','Cherry']
append()
能夠很好的知足咱們動態建立數組的需求。例如,咱們能夠先建立一個空的列表,在使用一系列的append()
語句來動態的添加元素。
例如:排序
fruits = [] fruits.append('Apple') fruits.append('Banana') fruits.append('Pear') print(fruits) ['Apple','Banana','Pear']
這種建立方式比較常見,由於不少時候,咱們在代碼的執行過程當中纔會知道哪些元素須要添加到列表中,哪些元素不須要添加。
2.在列表中插入元素
使用方法insert()
可在列表的任何位置添加新元素。可是,你須要指定新元素的索引和值。
fruits = ['Apple','Banana','Pear'] fruits.insert(0,'Orange') print(fruits) ['Orange','Apple','Banana','Pear']
在該實例中,Orange
被插入到了索引爲0
的這個位置。這種操做會使列表內的其餘的每一個元素都右移一個位置。
須要注意的是:插入數據的索引不能超過列表當前最大的索引值,若是咱們執行fruits.insert(10,'Orange')
就會報錯。你能夠試一下。
咱們常常須要從列表中刪除一個元素,好比說有Apple
這種水果由於缺貨須要下架了,咱們須要將Apple
從列表中移除掉。你能夠根據位置或值來刪除列表中的元素。
1.使用del語句刪除元素
若是知道要刪除的元素在列表中的位置,可直接使用del
語句。
fruits = ['Apple','Banana','Pear'] print(fruits) ['Apple','Banana','Pear'] del fruits[0] print(fruits) ['Banana','Pear']
使用del
可刪除任何位置處的列表元素,條件是知道其索引。下例演示瞭如何刪除fruits
列表中的第二個元素
fruits = ['Apple','Banana','Pear'] print(fruits) ['Apple','Banana','Pear'] del fruits[1] print(fruits) ['Apple','Pear']
從輸出來看,第二個元素已經被刪除了。
2.使用方法pop()刪除元素
有時候,你要將元素從列表中刪除,並接着使用它的值。好比你下架了某種水果,須要把這種水果放入到明天的採購列表中。
方法pop()
可刪除列表末尾的元素,並讓你可以接着使用它。
fruits = ['Apple','Banana','Pear'] print(fruits) poped_fruit = fruits.pop() print(fruits) ['Apple', 'Banana'] print(poped_fruit) Pear
執行pop()
方法後,原數組最後一個元素被移除掉且最後一個元素做爲返回值被返回。
3.pop列表中任何位置處的元素
想必你已經猜到了,咱們只須要在pop()
方法內傳入想移除的元素索引就能夠。
fruits = ['Apple','Banana','Pear'] print(fruits) ['Apple', 'Banana', 'Pear'] first_fruit = fruits.pop(0) print(first_fruit) Apple
別忘了,每當你使用pop()時,被彈出的元素就再也不在列表中了。
若是你不肯定該使用del語句仍是pop()
方法,下面是一個簡單的判斷標準: 若是你要從列表中刪除一個元素,且再也不以任何方式使用它,就使用del
語句,若是你要在刪除元素後還能繼續使用它,就使用方法pop()
。
4.根據值刪除元素
有時候,咱們並不知道要從列表中刪除的值所處的位置。若是你只知道要刪除的元素的值,可以使用remove()
方法。
fruits = ['Apple','Banana','Pear'] print(fruits) ['Apple', 'Banana', 'Pear'] fruits.remove('Apple') print(fruits) ['Banana', 'Pear']
方法remove()
只刪除在列表中出現的第一個指定的值。也就是說假如Apple
在fruits
列表中出現了屢次,調用remove()
方法,只會刪除第一個Apple
。
fruits = ['Apple','Banana','Pear','Apple'] print(fruits) ['Apple', 'Banana', 'Pear','Apple'] fruits.remove('Apple') print(fruits) ['Banana', 'Pear','Apple']
在咱們建立的列表中,元素的排列順序經常是沒法預測的。由於咱們並不是總能控制用戶提供數據的順序。咱們又常常須要以特定的順序呈現信息。有時候,你但願保留列表元素最初的排列順序,而有時候又須要調整排列順序。Python提供了不少組織列表的方式,可根據具體狀況選用。
Python方法sort()
讓你可以輕鬆地對列表進行排序。假設你有一個水果列表,並要讓其中的水果按字母順序排列。爲簡化這項任務,咱們假設該列表中的全部值都是小寫的。
fruits = ['pear','banana','apple'] print(fruits) ['pear', 'banana', 'apple'] fruits.sort() print(fruits) ['apple', 'banana', 'pear']
方法sort()
永久性地修改了列表元素的排列順序。如今,fruits
是按字母順序排列的,再也沒法恢復到原來的排列順序。
咱們還能夠按與字母順序相反的順序排列列表元素,爲此,只需向sort()
方法傳遞參數reverse=True
便可。
fruits.sort(reverse=True) print(fruits) ['pear', 'banana', 'apple']
要保留列表元素原來的排列順序,同時以特定的順序呈現它們,可以使用函數sorted()
。函數sorted()
讓你可以按特定順序顯示列表元素,同時不影響它們在列表中的原始排列順序。下面嘗試對fruits
列表調用這個函數。
fruits = ['pear','banana','apple'] print(fruits) ['pear', 'banana', 'apple'] print(sorted(fruits)) ['apple', 'banana', 'pear'] # 再一次輸出 fruits print(fruits) ['pear', 'banana', 'apple']
注意,調用函數sorted()
後,列表元素的排列順序並無變。若是你要按與字母順序相反的順序顯示列表,也可向函數sorted()
傳遞參數reverse=True
。
在並不是全部的值都是小寫時,按字母順序排列列表要複雜些,這個問題咱們後面再詳細解答。
要反轉列表元素的排列順序,可以使用方法reverse()
。假設fruist
列表是按購買時間排列的,可輕鬆地按相反的順序排列其中的水果:
fruits = ['pear','banana','apple'] print(fruits) ['pear', 'banana', 'apple'] fruits.reverse() print(fruits) ['apple', 'banana', 'pear']
reverse()
不是指按與字母順序相反的順序排列列表元素,而只是反轉列表元素的排列順序。
方法reverse()
永久性地修改列表元素的排列順序,但可隨時恢復到原來的排列順序,爲此 只需對列表再次調用reverse()便可
使用函數len()
可快速獲悉列表的長度
fruits = ['pear','banana','apple'] len(fruits) 3
獲取列表的長度在開發過程當中頗有用,好比咱們利用len()
方法一下就能夠獲取到當前有多少種水果正在銷售。
7-1 將一些朋友的姓名存儲在一個列表中,並將其命名爲 names。依次訪問該列表中的每一個元素,從而將每一個朋友的姓名都打印出來。
7-2 嘉賓名單: 若是你能夠邀請任何人一塊兒共進晚餐(不管是在世的仍是故去的),你會邀請哪些人?請建立一個列表,其中包含至少 3 個你想邀請的人,而後,打印列表。
7-3 修改嘉賓名單:你剛得知有位嘉賓沒法赴約,所以須要另外邀請一位嘉賓。修改嘉賓名單,將沒法赴約的嘉賓的姓名替換爲新邀請的嘉賓的姓名。
而後再一次打印這個列表。
7-4 添加嘉賓:你剛找到了一個更大的餐桌,可容納更多的嘉賓。請想一想你還想邀請哪三位嘉賓。
使用 insert()將一位新嘉賓添加到名單開頭。
使用 insert()將另外一位新嘉賓添加到名單中間。
使用 append()將最後一位新嘉賓添加到名單末尾。
7-5 縮減名單: 你剛得知新購買的餐桌沒法及時送達,所以只能邀請兩位嘉賓。 使用pop()不斷地刪除名單中的嘉賓,直到只有兩位嘉賓爲止。每次從名單中彈出一位嘉賓時,都打印一下。
7-7 放眼世界: 想出至少 5 個你渴望去旅遊的地方。將這些地方存儲在一個列表中,並確保其中的元素不是按字母順序排列的。按原始排列順序打印該列表。不要考慮輸出是否整潔的問題,只管打印原始Python 列表。
使用 sorted()按字母順序打印這個列表,同時不要修改它。再次打印該列表,覈實排列順序未變。
使用 sorted()按與字母順序相反的順序打印這個列表,同時不要修改它。再次打印該列表,覈實排列順序未變。
使用 reverse()修改列表元素的排列順序。打印該列表,覈實排列順序確實變了。
使用 reverse()再次修改列表元素的排列順序。打印該列表,覈實已恢復到原來的排列順序。
使用 sort()修改該列表,使其元素按字母順序排列。打印該列表,覈實排列順序確實變了。
使用 sort()修改該列表,使其元素按與字母順序相反的順序排列。打印該列表,覈實排列順序確實變了。
想查看做業答案能夠去個人Githu倉庫