Python list 數據類型:列表


列表與字典(還沒接觸到)是Python中兩個主要的數據類型。他們可以被修改,可以增長可以縮短,也可以嵌套。

列表   list

列表可以完成大多數集合類的數據結構實現。它支持字符,數字,字符串甚至可以包含列表(所謂嵌套)。

Python 的列表與C語言中的數組訪問方法相同,通過偏移地址訪問。

下面舉幾個列表的例子,圖片來自《Python學習手冊(第三版)》

image_thumb5[1]

為了加速進度以及方便查詢,我們看一下對列表常用操作的整理,圖片來自《Python學習手冊(第三版)》

image_thumb7[1]

現在我們詳細講一下幾個list的操作。

首先我們明確,Python的list可以容納任何對象。不管他是什么格式的。

1)創建list

創建列表的操作非常簡單,只要用中括號報過一系列逗號分隔的值就可以了。就像第一個圖片上那樣。

2)list 切片

定義新列表后,我們可以列表中的任何一個部分作為新的列表,該技術在dive in python 中稱為切片。

讓我們直接看程序。

a_list =['a','b','c','d','e','f']    # 創建一個列表
print a_list[1:3]                   # 在屏幕上打印一個切片

值得注意的是,在list偏移訪問中,與C中數組類似,同樣用a_list[0]表示列表第一項。

上面的程序我們得到了如下的結果:

image_thumb
b c 分別是列表中第二,第三個元素,序號應該是1 和2 ,可以看出,對於 a_list[x,y] 的切片,切片片段為序號x到y-1之間的內容。

我們也可以截取半段,讓我們看程序

# 位置     1   2   3   4   5   6
# 序號     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']   #                  定義
print a_list[:3]                                   
print a_list[3:]

image_thumb2

從結果中我們可以看出,第一個片段[:3] 取的是從第一位到第三位的片段,而[3:] 獲取的是從第四位,到結尾的片段。

無論列表多長[:n]片段中總含有n個元素。

如果將x,y都留空,那么程序將取列表內全部的元素,但是卻獲得了一個新的列表。

如果x , y中有負數怎么辦,讓我們來看一下

# 位置     1   2   3   4   5   6
# 序號     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']   
print a_list[-1:3]                    
print a_list[3:-1]

image_thumb3

第一個print輸出了空的list, 第二個卻輸出了兩個。 認真看我們可以看出,負數是指從右往左數,正數是指,從左往右。

3)向列表list中添加元素

從第三題中,我們認識到append可以向list中添加元素。

a_list.append('NEW')

讓我們測試一下這句話.

# 位置     1   2   3   4   5   6
# 序號     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
a_list.append('NEW')
print a_list

image_thumb5

字符串 NEW 已經被添加到該列表結尾處了.

當然除了append 這種只能在末尾添加 元素 的操作來說,我們還要插入操作

a_list.insert( n,35434)

insert 后面有兩個操作符, 那么n表示插入哪個元素之后, 那串數表示插入什么東西,當然任何類型的都可以,讓我們試一下這個新認識的方法.

# 位置     1   2   3   4   5   6
# 序號     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
a_list.insert(2,'NEW')
print a_list
a_list.insert(6,43223452)
print a_list
image_thumb6

可以看到,插入位置是n號元素之前。

這兩種操作都是單個元素插入,當我們需要將大量數據放在列表末尾的時候,我們就需要另一個新的方法了。

a_list.extend( [ 'fdaf',342 ] )

看一下例子就好了.

# 位置     1   2   3   4   5   6
# 序號     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
a_list.extend( [ 'fdaf',342 ] )
print a_list

image_thumb7

當然我們還有更簡單的在末尾擴增list的方法.

+

沒錯,就是一個符號.

# 位置     1   2   3   4   5   6
# 序號     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
a_list+=[ 'fdaf',342 ]
print a_list

image_thumb8

看,我們得到了相同的結果!

4)在列表中查詢

在C語言中,遍歷數組什么的是常見的問題,我們需要知道,數組中有沒有某個元素,某個元素在數組中的什么位置,某個元素在數組中出現的次數 等等等。這些也許在C中需要長篇累牘的描述算法,但是Python豐富的庫資源已經把這些問題解決了。讓我們看看下面的表吧:

a_list.count(  'NEW' )     #計算出現次數
a_list.index( 'NEW' )        #尋找第一次出現的位置
'NEW' in a_list        #確認元素是否出現在list中

現在我們測試一下這幾種功能。

# 位置     1   2   3   4   5   6
# 序號     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
print a_list.count(  'NEW' )     #計算出現次數
print 'NEW' in a_list        #確認元素是否出現在list中

image_thumb9

我們沒有測試index,因為index 有個比較有趣的現象,讓我們來試一下。

# 位置     1   2   3   4   5   6    7
# 序號     0   1   2   3   4   5    6
a_list =['a','b','c','d','e','f','NEW']
print a_list.index(  'NEW' )

image_thumb10

list中存在NEW,返回了正確的值。如果沒有NEW會怎么樣的呢

# 位置     1   2   3   4   5   6
# 序號     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
print a_list.index(  'NEW' )

image_thumb11

竟然提示錯誤,當然,這個就是引發了一個異常。之后我們會漸漸認識到這個做法的好處。

5)從列表中刪除元素

既然我們插入了元素,那么我們也可以刪除他,但是,元素的插入與刪除並不像C語言那么麻煩,刪除操作是如此的簡單,大家看下例子就會了。

當我們知道元素的確切位置的時候,我們使用

del a_list[n]

當我們不知道位置,而是知道刪除什么的時候,使用:

a_list.remove(    )

與求元素准確位置一樣,如果刪除一個list中不存在的元素會引發程序錯誤。

最后我們確認一點,空列表的布爾值為False,其他的列表均為Ture。


免責聲明!

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



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