List
-
創(chuàng)建方法:
使用方括號[ ]創(chuàng)建一個list
L = [] L = ['a','b','c']
有序性:有序
可更改性:可更改
元素唯一性:可重復(fù)
-
訪問方式:
-
讀取/更改:
List按照數(shù)字索引訪問內(nèi)容汉嗽,起始索引為0(不要越界)
print L[0] L[1] = 'string1'
List可以使用負(fù)數(shù)索引完成倒序訪問衅疙,起始索引為-1(不要越界)
print L[-1]
-
添加/刪除
使用append方法可以向list末尾添加一個新元素辕棚;使用pop方法元素讀出list末尾一個元素并將其刪除蛹批,為pop方法指定索引號可讀出并刪除指定元素
L.append("one more element") the_last_element = L.pop() the_third_element = L.pop(2) //索引號起始為0
使用insert方法向list的任意位置添加一個新元素, 第一參數(shù)為索引號陈惰,第二個是新元素武翎;
L.insert(2,'a new element')
進(jìn)階操作
切片(獲取list中的一部分內(nèi)容生成新的list)
使用L[起始索引:終止索引]來生成一個從起始索引開始(包括起始索引)到終止索引(不包括終止索引)的list, 可以使用負(fù)數(shù)進(jìn)行倒序索引
第一個索引值缺省表示從第一個元素開始取佣盒,第二個索引值缺省表示取到最后一個元素
還可以使用L[起始索引:終止索引:間隔n]來每n個數(shù)的元素取一個偿荷,即每隔n-1個元素取一個
L = ['a','b','c','e'] new_L = L[1:3] //這時new_L包括a,b,c三個元素(索引從0開始) new_L = L[-4:-2]//這時new_L包括a,b兩個元素 new_L = L[:2] //這時new_L包括a,b,c三個元素 new_L = L[:] //相當(dāng)于復(fù)制了一個L枝誊,new_L和L的改動互不影響 new_L = L //這樣的話况芒,new_L與L表示同一個list的兩個名稱,任何一個改動另外一個也變化 new_L = L[::2] //這時new_L包括a,c兩個元素
ps:字符串也可以進(jìn)行類似list的切片操作绝骚,將每一個字符視為一個元素,按照list的方式操作即可
-
Tuple
-
創(chuàng)建方法
使用小括號( )創(chuàng)建一個tuple
T = () //空tuple是無意義的皮壁,因為tuple一旦創(chuàng)建就不能修改了 T = ('a','b','c') T = (1,) //只含一個整數(shù)的tuple在創(chuàng)建時需要加一個逗號以同普通整數(shù)區(qū)分(因為小括號可以是運算符)
有序性:有序
可更改性:不可更改
元素唯一性:可重復(fù)
-
訪問方式:
-
讀取
訪問方式同list,可以使用數(shù)字正序或者倒序索引哪审,但其內(nèi)容不可更改蛾魄,但如果使用list作為tuple的元素,則可以通過更改list變相的改變tuple
print T[2] // 使用小括號創(chuàng)建湿滓,但仍然使用中括號索引 T = ('a','b',[])
-
Dict
-
創(chuàng)建方法
使用大括號來創(chuàng)建一個dict
D = { 'first':'a', // dict以“索引:值”的方式創(chuàng)建滴须,即key:value 'second':'b', 'third':'c' }
有序性:無序
可更改性:可更改
元素唯一性:value可重復(fù), key唯一且不能為可變類型如list
-
訪問方式
-
讀取/更改
使用key來索引訪問,類似于list (訪問到不存在的key會報錯)叽奥;
使用in操作符可以判斷key是否存在
使用get方法通過key訪問(key不存在時返回None)
用不存在的key做索引給dict賦值可以增加新元素扔水,存在的key做索引給dict賦值會更新key對應(yīng)的value
print D['first'] if 'first' in D: print D['first'] print D.get('first') D['fourth'] = 'new_element' D['first'] = 'change_element'
-
set
-
使用set()創(chuàng)建一個set,傳入一個list作為參數(shù)可以用list中的值初始化set
S = set() S = set(['a','b','c'])
有序性:無序
可更改性:可更改
元素唯一性:元素唯一朝氓,且元素不能為可變類型如list
-
訪問方式
-
讀取
因為set無序所以不能使用數(shù)字索引來取出特定元素魔市,使用in運算符可以判斷一個元素是否在set
使用add方法可將一個元素添加到set中
使用pop方法從set中取出一個元素并從set中刪除
if 'a' in S print "a在S中" S.add('d') print S.pop
ps:set的元素?zé)o序主届,因此不能確定pop出的元素是哪一個
-
總結(jié)
? List和tuple在內(nèi)存中以數(shù)組方式組織,查找效率不如dict和set高待德,但占用空間少君丁;Dict和set在內(nèi)存中以哈希表方式組織查找效率很高,但占用內(nèi)存空間較大将宪。
? 四種數(shù)據(jù)類型都能夠存放各種類型的元素绘闷,且不需要儲存的元素類型相同。需要注意的是较坛,dict的索引(key)和set中的元素不能為可變的數(shù)據(jù)類型印蔗,如list。
? List和tuple可以使用數(shù)字索引來正序或者倒序的訪問丑勤,但tuple的元素個數(shù)和名稱等是不可改變的华嘹,可以把List作為tuple的元素來變相的是tuple能夠改變。
? set可以用于去重復(fù)确封,但無法訪問其中的特定元素除呵,dict可以通過索引(key)來訪問其中的元素,也可通過get方法來訪問爪喘,使用in運算符颜曾,可以判斷一個元素在不在set中或者判斷在不在dict的key中。
? 使用 for 變量 in list/tuple/dict/set 可以遍歷這些結(jié)構(gòu)中的值秉剑,注意泛豪,但遍歷dict時for中的變量取出的是dict的key,需要通過key讀出value