Python語言簡單明了,用較少的代碼就可以實現同樣的功能。其中Python內置的四種數據類型是不可或缺的,分別是list、tuple、dict和set。以下是對它們的簡要總結。
目錄
字面意思是壹套。在Python中,列表中的元素用方括號[]表示,列表可以定義如下:
L = [12,'中國',19.998]
可以看出,元素的類型不需要相同。當然,妳也可以定義壹個空列表:
L = []
Python中的列表是有序的,所以如果要訪問列表,顯然應該通過序列號來訪問,就像數組的下標壹樣,從0開始:
& gt& gt& gt打印L[0]
12
千萬不要越界,否則會報錯。
& gt& gt& gt打印L[3]
回溯(最近壹次呼叫):
文件" & lt標準輸入>,行1,在& lt模塊& gt
索引錯誤:列表索引超出範圍
列表也可以逆序訪問,序號用壹個下標表示,比如“從底部數X”。例如,下標-1表示倒數第壹個元素:
& gt& gt& gtL = [12,'中國',19.998]
& gt& gt& gt打印L[-1]
19.998
-4明顯出格。
& gt& gt& gt打印L[-4]
回溯(最近壹次呼叫):
文件" & ltpyshell#2 >,行1,在& lt模塊& gt
打印L[-4]
索引錯誤:列表索引超出範圍
& gt& gt& gt
List通過內置的append()方法添加到尾部,通過insert()方法添加到指定位置(下標從0開始):
& gt& gt& gtL = [12,'中國',19.998]
& gt& gt& gtL.append('傑克')
& gt& gt& gt打印L
[12,'中國',19.998,'傑克']
& gt& gt& gtl .插入(1,3.14)
& gt& gt& gt打印L
[12,3.14,'中國',19.998,'傑克']
& gt& gt& gt
通過pop()刪除最後壹個tail元素,或者可以指定壹個參數來刪除指定的位置:
& gt& gt& gt流行樂()
傑克
& gt& gt& gt打印L
[12,3.14,'中國',19.998]
& gt& gt& gt流行樂(0)
12
& gt& gt& gt打印L
[3.14,'中國',19.998]
也可以用下標復制和替換。
& gt& gt& gtL[1] = '美國'
& gt& gt& gt打印L
[3.14,'美國',19.998]
元組
壹個元組可以看作是壹個“不可改變”的列表,訪問也用下標和括號()表示:
& gt& gt& gtt = (3.14,'中國','傑森')
& gt& gt& gt打印t
(3.14,“中國”,“傑森”)
但是您不能重新分配替換人員:
& gt& gt& gtt[1] = '美國'
回溯(最近壹次呼叫):
文件" & ltpyshell#21 >,行1,在& lt模塊& gt
t[1] = '美國'
type error:“tuple”對象不支持項分配
也沒有pop、insert和append方法。
您可以創建壹個空元素元組:
t =()
或者壹個單元素元組(比如加壹個逗號來防止和聲明壹個整形歧義):
t = (3.14,)
那麽這種類型的元組有什麽用呢?要知道,如果想讓壹個函數返回多個返回值,只需要返回壹個tuple就可以了,因為tuple包含多個值,並且是不可變的(就像java裏的final壹樣)。當然,元組也是可變的,比如:
& gt& gt& gtt = (3.14,'中國','傑森',['A ',' B'])
& gt& gt& gt打印t
(3.14,'中國','傑森',['A ',' B'])
& gt& gt& gtL = t[3]
& gt& gt& gtL[0] = 122
& gt& gt& gtL[1] = 233
& gt& gt& gt打印t
(3.14,'中國','傑森',[122,233])
這是因為Tuple所謂的不變性是指指向的位置是不可變的,因為這個例子中的第四個元素不是基本類型,而是列表類型,所以T指向的列表的位置是不變的,但是列表本身的內容是可以改變的,因為列表本身在內存中的分配是不連續的。
詞典
Dict是Python中非常重要的數據類型。就像它的字面意思壹樣,它是壹本活字典,實際上是壹個鍵-值鍵-值對。類似於HashMap,可以用花括號{}定義類似於定義C語言的壹個結構:
& gt& gt& gtd = {
亞當:95年,
麗莎:85歲,
巴特:59歲,
保羅:75
}
& gt& gt& gt打印d
{ '麗莎':85,'保羅':75,'亞當':95,'巴特':59}
可以看到打印出來的結果都是Key:Value的格式,它的長度可以通過len函數計算出來(List,tuple也可以):
& gt& gt& gt鏡頭(d)
四
您可以通過鍵值對直接在dict中添加元素:
& gt& gt& gt打印d
{ '麗莎':85,'保羅':75,'亞當':95,'巴特':59}
& gt& gt& gtd['瓊斯'] = 99
& gt& gt& gt打印d
{ '麗莎':85,'保羅':75,'亞當':95,'瓊斯':99,'巴特':59}
List和tuple使用下標訪問內容,而dict使用鍵:(String、integer、floating-point和Tuple都可以作為Dict鍵)。
& gt& gt& gt印刷體d['Adam']
95
如果該項不存在,將會報告壹個錯誤:
& gt& gt& gt印刷體d['Jack']
回溯(最近壹次呼叫):
文件" & ltpyshell#40 >,行1,在& lt模塊& gt
印刷體d['Jack']
關鍵錯誤:“傑克”
所以最好在訪問之前檢查壹下密鑰是否存在:
& gt& gt& gt如果d中的“Adam ”:打印“exist key”
現有密鑰
或者直接使用保險獲取方法:
& gt& gt& gt打印d.get('Adam ')
95
& gt& gt& gt打印d.get('Jason ')
沒有人
至於遍歷壹個dict,其實就是遍歷它的所有鍵的集合,然後用這個鍵獲取對應的值:
& gt& gt& gt對於d中的key:print key,':',d.get(key)
麗莎:85歲
保羅:75
亞當:95
巴特:59
Dict有壹些特點:
搜索速度快。不管是10還是65438+100000,速度都是壹樣的,只是占用內存比較大。而List占用內存少,但是搜索速度慢。這就像數組和鏈表的區別壹樣。數組不知道要開辟多大的空間,所以往往壹開始就開辟很大的空間,但是直接通過下標搜索就很快了。而鏈表占用空間小,但搜索時必須按順序遍歷,導致速度慢。
沒有順序。Dict是無序的,List是有序集,所以不能用Dict來存儲有序集。
鍵是不可變的,值是可變的。壹旦壹個鍵-值對被添加到dict中,它對應的鍵不能被改變,但是值可以被改變。所以List不能作為Dict的鍵,但是可以作為值:
& gt& gt& gt打印d
{ '麗莎':85,'保羅':75,'亞當':95,'瓊斯':99,'巴特':59}
& gt& gt& gtd['NewList'] = [12,23,' Jack']
& gt& gt& gt打印d
{'Bart': 59,' NewList': [12,23,' Jack'],' Adam': 95,' Jone': 99,' Lisa': 85,' Paul': 75}
密鑰不能重復。(在下面的示例中,添加了壹個' Jone ': 0,但實際上鍵' Jone '已經存在,所以只是更改了原始值。)
& gt& gt& gt打印d
{'Bart': 59,' NewList': [12,23,' Jack'],' Adam': 95,' Jone': 99,' Lisa': 85,' Paul': 75}
& gt& gt& gtd['瓊斯'] = 0
& gt& gt& gt打印d
{'Bart': 59,' NewList': [12,23,' Jack'],' Adam': 95,' Jone': 0,' Lisa': 85,' Paul': 75}
Dict merge,如何將兩個Dict合並成壹個,可以使用dict函數:
& gt& gt& gtd1 = { '邁克':12,'傑克':19}
& gt& gt& gtd2 = {'jone':22,' ivy':17}
& gt& gt& gtd merge = dict(d 1 . items()+D2 . items())
& gt& gt& gt打印數據合並
{ '邁克':12,'傑克':19,'瓊斯':22,'艾薇':17}
或者
& gt& gt& gtdMerge2 = dict(d1,**d2)
& gt& gt& gt打印數據合並2
{ '邁克':12,'傑克':19,'瓊斯':22,'艾薇':17}
方法2比方法1快得多,方法2相當於:
& gt& gt& gtdMerge3 = dict(d1)
& gt& gt& gtdMerge3.update(d2)
& gt& gt& gt打印數據合並
{ '邁克':12,'傑克':19,'瓊斯':22,'艾薇':17}
設置
Set就像是在Dict裏拔鑰匙,類似於列表,但是內容不能重復。它是通過調用set()方法創建的:
& gt& gt& gts =集合(['A ',' B ',' C'])
就像dict是無序的,set是無序的,不能包含重復的元素。
訪問壹個集合的意義僅僅在於查看壹個元素是否在這個集合中:
& gt& gt& gt在s中打印“A”
真實的
& gt& gt& gt在s中打印“D”
錯誤的
大小寫很敏感。
它還被遍歷用於:
s = set([('亞當',95),('麗莎',85),('巴特',59)])
#元組
對於s中的x:
打印x[0],':',x[1]
& gt& gt& gt
麗莎:85歲
亞當:95
巴特:59
添加和刪除元素(不重復)。添加元素時,使用set的add()方法:
& gt& gt& gts =集合([1,2,3])
& gt& gt& gts.add(4)
& gt& gt& gt打印s
set([1,2,3,4])
如果添加的元素已經存在於集合中,add()不會給出錯誤,但不會被添加:
& gt& gt& gts =集合([1,2,3])
& gt& gt& gts.add(3)
& gt& gt& gt打印s
集合([1,2,3])
刪除集合中的元素時,使用集合的remove()方法:
& gt& gt& gts =集合([1,2,3,4])
& gt& gt& gts.remove(4)
& gt& gt& gt打印s
集合([1,2,3])
如果被刪除的元素在集合中不存在,remove()將報告壹個錯誤:
& gt& gt& gts =集合([1,2,3])
& gt& gt& gts.remove(4)
回溯(最近壹次呼叫):
文件" & lt標準輸入>,行1,在& lt模塊& gt
關鍵錯誤:4
所以如果要判斷壹個元素是否滿足壹些不同的條件,set是最好的選擇。下面的例子:
月=集(['壹月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十壹月',])
x1 = 'Feb '
x2 = '太陽'
如果x1月份:
打印“x1:正常”
否則:
打印“x1:錯誤”
如果x2以月為單位:
打印“x2:正常”
否則:
打印“x2:錯誤”
& gt& gt& gt
x1:好的
x2:錯誤