Python 2.7 學習筆記 列表的使用


同其它編程語言一樣,python也提供了豐富的數據結構,以方便數據的處理。本文介紹兩種最基本的數據集合,列表和元組的使用。

一、列表使用介紹

可以理解為一個有序的序列。其使用方式舉例如下:

list=[]  #定義了一個空的列表
list.append("hello1")   #往列表的尾部插入一個元素
list.append(12)  #往列表的尾部插入一個元素,可以看出,列表中的元素可以是多種類型的
print list
for item in list:   #利用for循環遍歷列表中的元素
    print item
list.insert(0,10)  #往列表中插入元素,insert方法的第一個參數是代表插入的位置,0表示第一個位置
list.insert(2,11)
print list
list.pop()   #pop方法是移除列表中的元素(默認為最后一個),並返回該元素。注意如果這時列表為空,則拋異常
print list
list.pop(0) #帶參數的pop放啊是移除指定位置的元素,並返回該元素。注意,如果指定為主的元素不存在,則拋異常
print list
list.remove("hello1")   #remove方法,是刪除列表中元素內容同參數的元素,如果指定內容的元素不存在,則拋異常
print list
上面的代碼演示了如何利用列表的  append, insert, pop,remove 這四個方法來插入和刪除列表元素,並演示了如何利用for循環遍歷列表元素。

除了上面操作外,還有其它操作:

1、內建函數 len , max, min ,list,del

這前三個python的內建函數,分別用於獲取列表中元素的個數,列表中元素的最大值和最小值。舉例如下:

>>> list=[12,'ad',13]
>>> len(list)
3
>>> max(list)
'ad'
>>> min(list)
12

注意,如果列表中沒有元素,則len方法返回0,但max和min方法會報異常。

list方法是將元組轉為list,這個在下一篇針對元組的文章中介紹。

del是python中的一個內建關鍵字,可用於刪除變量。也可以用在刪除列表的元素。

比如: del  list[1]  #刪除列表第2個元素

del list[:] 

這是刪除列表所有元素,注意list=[]達不到這個效果,因為可能list指向的列表還有別的變量指向它,它只是改變了當前這個list變量的指向,但del list[:]是刪除實際列表中的所有元素

[:] 這個冒號前后可以加范圍,可以刪除指定范圍的元素,這個具體用法可看下面的 列表分片操作的介紹,這里就不多介紹了。

 

2、列表的index方法

用於從列表中查找指定值匹配元素的位置,如果元素不存在,則報異常,如:

>>> list=[12,14]
>>> list.index(14)
1
>>> list.index(13)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 13 is not in list

可以看出,元素14存在列表中,所以index成功返回元素在列表中的位置。而元素13不存在,所以index方法報異常。

3、列表的count方法

該方法用於統計某個元素在列表中出現的次數。如:

>>> list=["a","b"]
>>> list.count("a")
1
>>> list.count("c")
0
>>> list.append("a")
>>> list.count("a")
2

4、檢查元素是否在列表中存在

因為列表的很多方法,如 remove, index ,調用時如果指定的元素不存在,會報異常。為了避免異常,需要先檢查元素是否存在,存在后再調用相應的方法。實現的方法如下:

>>> print list
['a', 'b', 'a']
>>> 'a' in list
True
>>> 'c' in list
False

5、列表的extend方法
該方法用於在列表的末尾一次性增加另一個列表中的所有所有元素。

它與 兩個列表的連接(通過+號運算符)操作不同, +操作是返回新的列表,不改變原來兩個列表,而extend方法是修改了列表內容,往列表中加入值了。

舉例如下:

>>> list1=[1,2,3]
>>> list2=[4,5]
>>> list = list1+list2
>>> print list
[1, 2, 3, 4, 5]
>>> print list1
[1, 2, 3]
>>> print list2
[4, 5]
>>> list = list1.extend(list2)
>>> print list
None
>>> print list1
[1, 2, 3, 4, 5]
>>> print list2
[4, 5]

可以看出,extend方法不會有返回值。

6、列表的reverse方法

該方法將列表中的元素反向存放。舉例如下:

>>> list=[1,2,3]
>>> result = list.reverse()
>>> print result
None
>>> print list
[3, 2, 1]

可以注意到,reverse方法不會有返回值,它改變的是列表本身。實際上列表的各種方法,除pop方法有返回值外,其它方法都沒有返回值。

7、列表的復制 和分片操作

有時我們需要對列表進行復制,注意下面的方式不是復制。

list1 = [1,2,3]

list2 = list1

上面的操作,list2 和 list1 實際上是指向同一個列表,對list1或list2的任何一個進行操作,實際都是對同一個列表進行操作。

我們所說的復制,是深度復制,指創建一個新的列表(但內容一樣),創建后復制的列表和原始列表是沒關系的。

要想深度復制,可通過對列表的分片操作來實現,所謂分片操作,就是獲取列表的一部分或全部,形成一個全新的列表,這與原列表無關。

舉例如下:

>>> list=[1,2,3,4]
>>> newlist=list[1:3]  #分片操作,取第2和3個元素形成新列表
>>> print newlist
[2, 3]
>>> print list
[1, 2, 3, 4]
>>> list.pop()
4
>>> newlist.pop()
3
>>> print list
[1, 2, 3]
>>> print newlist
[2]

可以看出,分片操作獲得的列表是一個全新的列表,與原列表無關,兩者是完全獨立的,后續得各自操作也互不影響。

分別的完整語法是: list[startindex:endindex]   #其中startindex是起始位置(0代表第一個元素),endindex代表結束位置(但是不包含這個結束位置)。
下面是分片的幾種特別操作

newlist  =list[:]  #復制整個列表

newlist = list[2:]  # 獲取list的第三個元素及以后的元素,如果指定的序號超過列表的最大序號,則返回空的列表

newlist=list[:3]  #獲取列表的前3個元素,如果指定的數目超過列表的最大元素個數,則返回整個列表內容

newlist=list[-2:]  # 獲取列表的最后2位元素,如果指定數字的絕對值大於列表的元素總數,則返回整個列表內容

newlist=list[-3:-1]  # 這是相當於從列表的后面往前算,獲取包括倒數第3個~倒數第2個元素

上面介紹的分片操作,獲取的列表都是連續的,python的分片操作還提供可以指定步長的操作,即獲取的元素不是連續的,而是按照指定的步長跳着獲取元素。

舉例說明:

>>> list = [1,2,3,4,5,6,7,8,9]
>>> newlist = list[1:6:2]
>>> print newlist
[2, 4, 6]
>>> newlist = list[1:6:3]
>>> print newlist
[2, 5]

相比上面的代碼,[:]操作中最后多了參數,就是步長。
比如[1:6:2],如果步長為1,則[1:6]取得數據為2,3,4,5,6 ,而這里步長為2,因為第一個取得元素為2,間隔一個再取,結果就是 2,4,6了。

同理[1:6:3] , 而這里步長為2,因為第一個取得元素為2,間隔2個再取,結果就是 2,5了。

 

8、列表的sort方法

該方法對列表進行從低到高排序,注意它也沒有返回值,修改的是列表本身。如:

>>> list=[3,8,9]
>>> newlist=list.sort() 
>>> print list
[3, 8, 9]
>>> print newlist
None
>>> list.reverse()  
>>> print list
[9, 8, 3]

上面的例子也利用reverse方法,最后得到一個從高低排序的列表。

9、列表的高級排序

利用sort方法,只能按照默認方式排序,通過指定排序算法(函數),可以按照自己的要求來排序。

就是給sort方法指定一個排序函數。這個使用方法不再本文介紹。

 

二、列表使用總結

從上面的介紹可以看出,對列表的操作(包括列表本身方法和通用的內建函數)還是挺多的,記起來也比較麻煩。

為了方面記憶,我們這里匯總描述下。總的來說,對於一個列表,不外乎創建、增刪改差、其它幾種操作。

1、創建

直接通過 [] 符合創建,創建時可初始化

2、增加

可以利用 append, insert, extend 這幾個列表的方法。

3、刪除

可以利用列表的 pop,remove方法,以及內置函數del 來刪除列表中的元素。 

4、改

可以利用列表下標,如 list[2] =xxx 來修改元素中的內容

5、查

查詢列表中的元素可以有多種方法,如下:

1)利用for循環可以遍歷列表中所有元素

2)利用 序號索引可以獲取指定序號的元素(同其它語言的數組操作一樣),如 list[0] 獲取第1個元素,如果指定的索引越界,則會報異常

3)利用 index 方法 可以獲取指定元素的位置

4)利用pop方法可以獲取到指定位置的元素

5)利用分片操作可以獲取列表的部分或全部,這個注意會產生列表部分或全部的一個新的拷貝

6)用 in運算符來檢查某個元素值是否在列表中存在

6、其它操作

如利用sort方法排序,reverse方法列表元素順序反轉,分片操作復制列表。

利用內建函數 len,max,min 獲取隊列的元素個數,最大值、最小值。

利用count方法查找指定元素在隊列中的出現次數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM