? Python的基礎數(shù)據(jù)結(jié)構(gòu)有:列表(list
), 元祖(tuple
), 字典(dict
), 字符串(string
), 集合(set
)等天吓,區(qū)別聯(lián)系如下:
數(shù)據(jù)類型 | 列表 (list) |
元祖 (tuple) |
集合 (set) |
字典 (dictionary) |
|
---|---|---|---|---|---|
表示 | [] |
() |
{} |
{} |
|
舉例 | a_list = [1, True, ‘a(chǎn)a’] |
a_tuple = (1, True, ‘a(chǎn)a’);<br> t2 = (1 ,)
|
a_set = {1, True, ‘a(chǎn)a’};<br> s = set( [1, True, ‘a(chǎn)a’]) |
a_dict = {‘name’: ‘xuan’, ‘a(chǎn)ge’: 21} |
|
是否有序 | 有序 | 有序 | 無序 | 無序 | |
是否讀寫 | 讀寫 | 只讀 | 讀寫 | 讀寫 | 讀寫 |
空定義 | a_list = [] |
a_tuple = () |
a_set =set();<br>not_sure = {} 空字典 |
a_dict = {} |
|
元素可修改 | a_list[0] = 23 |
否 | 否 | a_dict[‘a(chǎn)ge’] = 30 |
|
下標訪問 | a_list[0] = 23 |
a_tuple[0] |
否 | a_dict[‘a(chǎn)ge’] = 30 |
|
添加元素 | +、append、extend睡蟋、insert |
不可添加 | add黎侈、update |
a_dict[‘new_key’] = ‘value’ |
|
刪除元素 | del、remove昼钻、pop()、pop(1)、clear |
不可刪除 | discard色解、remove、pop餐茵、clear |
pop科阎、popitem、clear |
|
元素查找 | index忿族、count锣笨、in |
in |
in |
a_dict[‘key’] |
|
布爾真值 | 非空 | 非空 | 非空 | 非空 | |
定義 | 列表(list )是有序 的集合,可以存放不同數(shù)據(jù)類型的數(shù)據(jù)道批,并且list 中的每個元素的都對應著一個索引 來標記其位置错英,且索引從0開始。 |
tuple 與list 類似隆豹,不同之處在于tuple 中的元素不能 進行修改 椭岩。而且tuple使用小括號() ,list 使用方括號[] 璃赡。 |
dic 字典是另一種可變 的容器模型判哥,且可存儲任意 類型對象。字典的每個鍵值(key:value) 對用冒號(: )分割鉴吹,每個對之間用逗號(, )分割姨伟,整個字典包括在花括號{} 中 |
set() 函數(shù)是創(chuàng)建一個無序不重復 元素集,可添加豆励,刪除數(shù)據(jù)夺荒,還可以計算交集瞒渠、差集、并集 等技扼。python 的集合類型和 其他語言類似, 是一個無序 不重復元素集, 基本功能包括關(guān)系測試和消除重復元素.集合對象還支持union(聯(lián)合), intersection(交), difference(差) 和sysmmetricdifference(對稱差集) 等數(shù)學運算,和我們初中數(shù)學學的集合的非常的相似伍玖。 |
一、列表list
剿吻、元祖-tuple
窍箍、集合set
、字典dic
全方位分析
數(shù)據(jù)結(jié)構(gòu) | 表示 | 分析 |
---|---|---|
列表list |
[] |
列表list 丽旅,用中括號“[ ] ”表示1. 任意 對象的有序 集合 列表是一組任意類型的值椰棘,按照一定順序組合而成的 2.通過 偏移 讀取 組成列表的值叫做元素(Elements)。每一個元素被標識一個索引榄笙, 第一個 索引是0 邪狞,序列的功能都能實現(xiàn) 3.可變長度,異構(gòu)以及任意嵌套 列表中的元素可以是任意類型茅撞,甚至是列表類型帆卓,也就是說列表可以嵌套 4. 可變 的序列 支持 索引、切片米丘、合并剑令、刪除 等等操作,它們都是在原處進行修改列表 5.對象引用數(shù)組 列表可以當成普通的 數(shù)組 拄查,每當用到引用時吁津,Python 總是會將這個引用指向一個對象,所以程序只需處理對象的操作靶累。當把一個對象賦給一個數(shù)據(jù)結(jié)構(gòu)元素或變量名時腺毫,Python 總是會存儲對象的引用,而不 是對象的一個拷貝
|
元祖tuple |
() |
1. 任意 對象的有序 集合 與列表相同 2.通過 偏移存取 與列表相同 3.屬于 不可變 序列類型 類似于字符串挣柬,但元組是不可變的潮酒,不支持在列表中任何原處修改操作,不支持任何方法調(diào)用 4. 固定 長度邪蛔、異構(gòu)急黎、任意 嵌套 固定長度即元組 不可變 ,在不被拷貝的情況下長度固定侧到,其他同列表 5.對象引用的數(shù)組 與列表相似勃教,元祖是對象引用的數(shù)組> tuple 和list 相比,元祖tuple 有以下特點1.比列表操作速度 快 2.對數(shù)據(jù)“ 寫保護 3.可用于字符串格式化中 4.可作為字典的 key |
字典dic |
{} |
1.通過 鍵 而不是偏移量 來讀取 字典就是一個關(guān)聯(lián)數(shù)組,是一個通過關(guān)鍵字索引的對象的集合匠抗,使用鍵-值( key-value )進行存儲故源,查找速度快 2. 任意 對象的無序 集合字典中的項沒有 特定順序 ,以“鍵”為象征 3. 可變長 汞贸、異構(gòu)绳军、任意嵌套同列表印机,嵌套可以包含列表和其他的字典等 4.屬于可變映射類型 因為是無序,故不能進行序列操作门驾,但可以在遠處修改射赛,通過 鍵映射到值 。字典是唯一內(nèi)置的映射類型(鍵映射到值的對象) 5. 對象 引用表 字典存儲的是對象 引用 奶是,不 是拷貝 楣责,和列表一樣。字典的key 是不能變的聂沙,list 不能作為key 秆麸,字符串、元祖逐纬、整數(shù) 等都可以 dic 和list 比較蛔屹,dict 有以下幾個特點:1.查找和插入的速度極 快 削樊,不會隨著key 的增加而增加 2.需要占用 大 量的內(nèi)存 豁生,內(nèi)存浪費多 而list相反: 1.查找和插入的時間隨著元素的增加而增加 2.占用空間小,浪費內(nèi)存很少 所以漫贞, dict 是用空間來換取時間的一種方法 |
集合 |
() |
1.是一組 key的集合 甸箱,但不存儲value ,并且key不能重復 創(chuàng)建一個 set 迅脐,需要提供一個list 作為輸入集合,s = set([1,2,3]) ,注意芍殖,傳入的參數(shù)[1, 2, 3] 是一個list ,而顯示的set([1, 2, 3]) 只是告訴你這個set 內(nèi)部有1谴蔑,2豌骏,3 這3個元素,顯示的[ ] 不表示這是一個list 2. 重復 元素在set 中自動被過濾 set 可以看成數(shù)學意義上的無序 和無重復 元素的集合 隐锭,因此窃躲,兩個set 可以做數(shù)學意義上的交集、并集 等操作還有一種集合是 forzenset( ) 钦睡,是凍結(jié)的集合蒂窒,它是不可變 的,存在哈希值荞怒,好處是它可以作為字典的key 洒琢,也可以作為其它集合的元素。缺點是一旦創(chuàng)建便不能更改 褐桌,沒有add衰抑,remove 方法set 和dict 對比,集合set 有以下特點1. set 和dict 的唯一區(qū)別僅在于沒有 存儲對應的value 2. set 的原理 和dict一樣 ,同樣不 可以放入可變 對象荧嵌,因為無法 判斷兩個可變對象是否相等 呛踊,也就無法保證set 內(nèi)部“不會有重復 元素” |
二挖帘、字典dic、列表list恋技、集合set拇舀、元祖tuple相互比較
比較 | 詳情 |
---|---|
字典dict 和列表list 的比較 |
dict 的查找和插入的速度極快,不會隨著key 的增加而變慢蜻底。但是需要占用大量的內(nèi)存骄崩,內(nèi)存浪費多。相反薄辅,list 查找和插入的時間隨著元素的增加而增加要拂。但是占用空間小,浪費內(nèi)存很少站楚。 |
字典dict 和集合set 比較 |
唯一區(qū)別僅在于沒有存儲對應的value脱惰,但是,set的原理和dict一樣窿春,所以拉一,同樣不可以放入可變對象,因為無法判斷兩個可變對象是否相等旧乞,也就無法保證set內(nèi)部“不會有重復元素”蔚润。 |
元祖tuple 與列表list 比較 |
tuple 與list 類似,不同之處在于tuple中的元素不能進行修改尺栖。而且tuple 使用小括號() 嫡纠,list 使用方括號[] 。 |
三延赌、Python一些內(nèi)置函數(shù)
編號 | 函數(shù) | 注釋 |
---|---|---|
1 |
cmp (A, B) |
比較可為list除盏、tuple等的A、B挫以,A>B為1者蠕,A=B為0,小于為-1 |
2 |
len (obj) |
計算元素個數(shù)屡贺。 |
3 |
max (obj) |
返回元素最大值蠢棱。 |
4 |
min (obj) |
返回元素最小值。 |
5 |
reversed (obj) |
對元素進行翻轉(zhuǎn) |
6 |
enumerate (obj) |
遍歷list的元素甩栈,返回序號及其對應的元素 for x泻仙, y in list:
|
7 |
zip () |
打包成tuple (元組),然后返回由這些tuples組成的list(列表) |
? 列表[]量没、元組()和字符串都是序列玉转,字符串是字符的序列,列表和元祖是任意類型的序列
注:本博主csdn同步鏈接
參考:
[1].python列表(list)殴蹄、元祖(tuple)究抓、集合(set)猾担,和字典(dictionary)的比較
[2].Python學習筆記(四)—列表(list)、元組(tuple)和字典(dictionary)刺下、集合(set)
[3].Python學習筆記(四)—列表(list)绑嘹、元組(tuple)和字典(dictionary)、集合(set)