Python學習筆記(列表) 2020/8/12

2020-08-12 10:01:16

列表是Python中一個容易使用且非常強大的功能,可以讓我們在一個地方儲存成組的資訊。
首先,列表類似於C語言中的陣列,由一系列按特定順序排序的元素組成,而且索引是從0而不是1開始。在Python中,用方括號([])來表示列表,並用逗號來分隔不同的元素。
例如:

languages = ['c','java','c#','python']
print(languages)

執行結果如下:

[‘c’, ‘java’, ‘c#’, ‘python’]

注意輸出的結果中包含方括號和逗號,如果我們只想輸出列表中的內容,則需要存取列表元素:

for language in languages:
 print(language.title())  #注意縮排和冒號

執行結果如下:

C
Java
C#
Python

列表的基本操作
一、修改、新增和刪除列表元素
在Python中,我們可以用更加簡便的語法來對列表元素進行操作:
(1)修改列表元素
修改列表元素的方法和C語言非常相似,只需要指定索引再指定新值就可以了:

languages = ['c','java','c#','python']
languages[1] = 'javascript'
for language in languages:
 print(language.title())

執行結果如下:

C
Javascript
C#
Python

(2)在列表中新增元素

a)在列表末尾新增元素
可以使用append方法將新元素附加到列表末尾:

languages = ['c','java','c#','python']
languages.append('php')
for language in languages:
 print(language.title())

執行結果如下:

C
Java
C#
Python
Php

使用append方法,我們可以輕易地動態建立列表,而不需要像C++語言一樣進行復雜的操作:

sports = []
sports.append('running')
sports.append('jogging')
sports.append('football')
sports.append('basketball')
sports.append('rugby')
for language in languages:
 print(language.title())

執行結果如下:

Running
Jogging
Football
Basketball
Rugby

b)在列表中插入元素
使用方法insert可以通過指定新元素的索引和值在列表的任意位置插入新的元素:

languages = ['c','java','c#','python']
languages.insert(0,'ruby')
for language in languages:
 print(language.title())

執行結果如下:

Ruby
C
Java
C#
Python

(3)刪除列表元素
a)使用del方法刪除元素
如果已知需要刪除的元素在列表中的位置,可以使用del方法來刪除:

languages = ['c','java','c#','python']
del languages[0]
for language in languages:
 print(language.title())

執行結果如下:

Java
C#
Python

del方法的前提是知道要刪除元素的索引,由此可以刪除任意位置的元素,但刪除後無法再次使用該元素

b)使用pop方法刪除元素
如果使用pop方法刪除元素,那麼我們就可以繼續使用被刪除的元素:

languages = ['c','java','c#','python']
other_languages = []
other_languages.append(languages.pop())
other_languages.append(languages.pop())
for other_language in other_languages:
 print(other_language)

執行結果如下:

python
c#

而且,如果我們爲pop方法指定索引,那麼我們可以刪除任意位置上的元素:

languages = ['c','java','c#','python']
other_languages = []
other_languages.append(languages.pop(2))
other_languages.append(languages.pop(2))
for other_language in other_languages:
 print(other_language)

執行結果如下:

c#
python

觀察到,當索引爲2的元素被刪除後,之前索引爲3的元素的索引變爲2。
c)根據值刪除元素
如果我們只知道需要刪除的元素的值,那麼我們可以使用remove方法來實現:

languages = ['c','java','c#','python']
languages.remove('c#')
for language in languages:
 print(language.title())

執行結果如下:

C
Java
Python

類似pop方法,當我們使用remove方法刪除元素時,仍可以繼續使用被刪除的元素。
需要注意的是,如果我們使用remove方法時,需要刪除的元素在列表中出現多次,那麼remove只刪除第一次出現的值:

languages = ['c','java','c#','python','c']
languages.remove('c')
for language in languages:
 print(language.title())

執行結果如下:

Java
C#
Python
C

顯然,二個‘c’並沒有被刪除,如果我們想要刪除全部的某種元素,可以使用回圈來判斷:

languages = ['c','java','c','c#','python','c']
while 'c' in languages:       #判斷該元素是否已被全部刪除
 languages.remove('c')      
for language in languages:
 print(language.title())

執行結果如下:

Java
C#
Python

可以觀察到,列表中的全部要刪除的元素均被刪除。

二、排序
(1)使用sort函數排序
如果我們希望對某個列表進行永久性排序,可以使用sort函數:

sports = ['running','jogging','football','basketball','rugby']
sports.sort()
print(sports)

執行結果如下:

[‘basketball’, ‘football’, ‘jogging’, ‘rugby’, ‘running’]

該函數在爲字串排序時,按照字母順序排列。
如果想按與字母順序相反的順序進行排序,可以向該函傳遞參數:reverse=True:

sports = ['running','jogging','football','basketball','rugby']
sports.sort(reverse=True)
print(sports)

執行結果如下:

[‘running’, ‘rugby’, ‘jogging’, ‘football’, ‘basketball’]

由此,我們可以與字母順序相反的順序對列表元素進行排序。
(2)使用sorted函數排序
如果我們希望在排序的同時,保留列表元素原來的順序,可以使用sorted函數:

sports = ['running','jogging','football','basketball','rugby']
print('Before the sort, the list is: ')
print(sports)
print('After the sort, the list is: ')
print(sorted(sports))
print('The original list is: ')
print(sports) 

執行結果如下:

Before the sort, the list is:
[‘running’, ‘jogging’, ‘football’, ‘basketball’, ‘rugby’]
After the sort, the list is:
[‘basketball’, ‘football’, ‘jogging’, ‘rugby’, ‘running’]
The original list is:
[‘running’, ‘jogging’, ‘football’, ‘basketball’, ‘rugby’]

同樣的,如果希望按照與字母順序相反的順序排序,也可以傳入參數reverse=True

(3)倒序列印列表
對於一個列表,如果我們希望反轉其中的數據,可以使用reverse函數:

sports = ['running','jogging','football','basketball','rugby']
print(sports)
sports.reverse()
print(sports)

執行結果爲:

[‘running’, ‘jogging’, ‘football’, ‘basketball’, ‘rugby’]
[‘rugby’, ‘basketball’, ‘football’, ‘jogging’, ‘running’]

reverse函數是永久地修改列表,但我們可以通過再次呼叫該函數的方式來恢復列表

(4)確定列表的長度
使用len函數可以顯示列表的長度:

sports = ['running','jogging','football','basketball','rugby']
print(len(sports))

執行結果爲:

5

三、建立數位列表
(1)range函數
在Python中,使用函數range可以輕鬆的生成一系列數位:

for value in range(2,7):
 print(value)

執行結果爲:

2
3
4
5
6

可以觀察到,傳入range的兩個參數爲左閉右開。
(2)使用range函數建立數位列表
建立數位列表時,可以使用list函數直接把range的結果轉換爲列表:

numbers = list(range(4,9))
print(numbers)

執行結果爲:

[4, 5, 6, 7, 8]

四、對數位列表的簡單統計計算

函數 描述
min 返回數位列表的最小值
max 返回數位列表的最大值
sum 返回數位列表的總和

五、使用列表的一部分
(1)切片
當我們想使用列表的一部分時,可以採用切片的方法,可以指定要使用的第一個元素的索引和要使用的最後一個元素的索引加1:

sports = ['running','jogging','football','basketball','rugby']
print(sports[0:3])

執行結果爲:

[‘running’, ‘jogging’, ‘football’]

如果不指定第一個索引,Python將從列表開頭擷取,如果不指定第二個索引,Python將自動擷取到列表末尾:

sports = ['running','jogging','football','basketball','rugby']
print(sports[:2])
print(sports[1:])

執行結果爲:

[‘running’, ‘jogging’]
[‘jogging’, ‘football’, ‘basketball’, ‘rugby’]

(2)複製列表

sports = ['running','jogging','football','basketball','rugby']
favorite_sports = sports[:]
print(favorite_sports)

執行結果爲:

[‘running’, ‘jogging’, ‘football’, ‘basketball’, ‘rugby’]

在Python中,可以使用負數索引,-1表示最後一個元素,-2表示倒數第二個元素:

sports = ['running','jogging','football','basketball','rugby']
print(sports[-1])
print(sports[-3])

rugby
football