Python有四種數(shù)據(jù)結(jié)構(gòu)适揉,這里再加上字符串窖剑,所以共有五種:
字符串(string)斗蒋、列表(list)捌斧、元組(tuple)、字典(dictionary)和集合(set)泉沾。
加上字符串是因?yàn)樗c其它數(shù)據(jù)結(jié)構(gòu)有些相似的地方捞蚂,放進(jìn)來一起講比較方便。
一跷究、定義方法
字符串用引號
例如:name='Swaroop'
列表用方括號
例如:shoplist=['apple','mango','carrot','banana']
元組用圓括號
例如:zoo=('python','elephant','penguin')
但元組在定義時姓迅,也可以不用括號,例如:
Number=1,2,3,4,5
特別地揭朝,如果元組中只有一個元素队贱,它后面需要一個逗號
例如:aNumber=1,
當(dāng)用print輸出時色冀,元組有圓括號潭袱,所以,用圓括號括住是常規(guī)狀態(tài)锋恬。
字典用花括號
例如:ab={
'Swaroop':'swaroop@swaroopch.com',
'Larry':'larry@wall.org',
'Matsumoto':'matz@ruby-lang.org',
'Spammer':'spammer@hotmail.com'
}
字典的每個元素有兩個成份:鍵值和值屯换。在定義時要成對地指定鍵值與值(前面的是鍵值,后一個是值)。
每一對之中用冒號隔開彤悔,各對用逗號隔開嘉抓。
集合用set()方法
這是與前面的數(shù)據(jù)結(jié)構(gòu)都不一樣的地方。
例如:bri = set(['brazil', 'russia', 'india'])
注意參數(shù)的形式跟列表一樣晕窑。
二抑片、分類
1 可變與不可變
列表、字典和集合是可變的杨赤。它們的元素可以修改敞斋,可以添加、刪除元素疾牲。
字符串和元組是不可變的植捎,里面的元素不可以修改,也不可以添加阳柔、刪除元素焰枢。
2 序列與非序列
列表、元組和字符串是序列舌剂。
序列同時具有三個特點(diǎn):
(1)in和not in運(yùn)算符測試元素資格(在與不在)济锄。
(2)有索引操作,可以直接獲取序列中的元素霍转。
(3)有切片操作拟淮,取序列中的一部分。
字典和集合不是序列谴忧。
字典和集合都有(1)很泊,但沒有(2)和(3)
三、訪問元素的方法
序列可以用數(shù)字下標(biāo)訪問元素沾谓,非序列不可以用這種方法委造。
字典,用鍵值訪問值均驶,例如:ab['Swaroop']昏兆。
集合不可以訪問到里面的元素。
四妇穴、刪除
1 都可以整體刪除爬虱,用del
2 列表、字典和集合都可以刪除其中的元素腾它,字符串和元組不可以跑筝。
(1)列表用del刪除元素,例如:del shoplist[0]
(2)字典用del刪除元素瞒滴,例如:del ab[’Spammer’]
(3)集合用remove方法曲梗,例如:bri.remove(’India’)
五赞警、添加成員
元組和字符串不可變,所以不能添加成員虏两。
1 列表愧旦,用append()方法
例:shoplist.append('rice')
2 字典,直接輸入
例:ab['Guido']='guido@python.org'#添加成員
3 集合定罢,用add()方法
例:bric.add('china')
六笤虫、都可以用print方法整體輸出
1 字符串顯示內(nèi)容,沒有引號
2 列表要顯示方括號
3 元組要顯示圓括號
4 字典要顯示花括號
5 集合要顯示花括號(注意它定義時祖凫,參數(shù)用的是方括號)
七耕皮、賦予變量和產(chǎn)生副本
1 字符串名如果賦予另一個變量,會產(chǎn)生一個副本蝙场。沒有兩個變量指向同一個字符串的情況凌停。
2 元組名賦予另一個變量,會產(chǎn)生一個副本售滤。沒有兩個變量指向同一個元組的情況罚拟。
3 列表名賦予一個變量,則它們指向同一個列表完箩,并沒有產(chǎn)生新的列表赐俗。也就是說,這個列表有了兩個名字弊知。
要產(chǎn)生副本阻逮,使用切片操作。例如:
s=shoplist[:]
4 字典名賦予另一個變量秩彤,它們指向同一個字典叔扼。要產(chǎn)生副本,使用copy()方法漫雷。例如:
a=ab.copy()
5 集合名賦予另一個變量瓜富,它們指向同一個集合。要產(chǎn)生副本降盹,使用copy()方法与柑。例如:
b=bri.copy()
八、元素個數(shù)都用方法len()
九蓄坏、遍歷
五種數(shù)據(jù)結(jié)構(gòu)都可以使用遍歷价捧,方法類似。
注意字典的一個元素有兩個成分涡戳。
for item in shoplist:#shoplist是一個列表
print(item,end=' ')
for item in zoo:#zoo是一個元組
print(item,end=' ')
for item in name:#name是一個字符串
print(item,end=' ')
for n,a in ab.items():#name是一個字典
print('Contact {} at {}'.format(n,a))
for x in bri:#bri是一個集合
Print(x)
十结蟋、切片運(yùn)算(序列具有)
參數(shù)用方括號表達(dá)一個區(qū)間。
1 完整參數(shù)
方括號里面有三個數(shù)值妹蔽,用冒號隔開椎眯。
第一、二個是下標(biāo)胳岂,給出一個左閉右開的區(qū)間编整,即從第一個下標(biāo)開始,到第二個下標(biāo)的前一個終止乳丰。
例如[1:3]的意義是1掌测,2。
第三個數(shù)值的意義是步長产园,省略了就是1汞斧。例如[1:3]相當(dāng)于[1:3:1]。
2 省略
方括號里面還可以省略到一個數(shù)值和沒有數(shù)值什燕,但冒號必不可少粘勒。
一個數(shù)值的例子:[2:],意義是從下標(biāo)2到最后屎即,步長為1庙睡。
沒有數(shù)值的例子:[:],意義是全部技俐,步長為1乘陪。
3 步長的正負(fù)及與區(qū)間方向的配合
步長可以為正,也可以為負(fù)雕擂。為正表示從下標(biāo)從小到大啡邑,為負(fù)表示從大到小。前面兩個數(shù)值也表達(dá)了方向井赌,這兩個必須一致谤逼,否則沒有結(jié)果。
例如,[1:3]是1仇穗,2森缠,而[1:3:-1]則沒有結(jié)果。因?yàn)榍懊媸菑男〉酱笠歉祝介L表達(dá)是從大到小贵涵,寫成[3:1]就有結(jié)果,為3恰画。
4 負(fù)下標(biāo)
-1宾茂,是最后一個元素(0是最前面一個)
負(fù)的下標(biāo),是從后面向前推進(jìn)拴还。
例如:
name=’Swaroop’
則name[-1]為p,name[1:-1]為waroo
十一跨晴、排序
列表用sort()方法,沒有任何參數(shù)時是升序片林。
例如:
shoplist.sort()#升序
shoplist.sort(reverse=True)#降序
當(dāng)然可以用reverse=False表示升序端盆,但沒有必要怀骤。
字符串和元組因?yàn)椴豢筛淖儯淮嬖谂判虻膯栴}焕妙。
集合沒有順序蒋伦,字典用其它方法排序。
十二焚鹊、連接運(yùn)算
用字符串的join()方法
以下痕届,定義字符串delimiter='_*_'
1 列表
例:
mylist=['Brazil','Russia','India','China']
print(delimiter.join(mylist))
結(jié)果:
Brazil_*_Russia_*_India_*_China
2 元組
例:
zoo=('python','elephant','penguin')
print(delimiter.join(zoo))
結(jié)果:
python_*_elephant_*_penguin
3 字符串
例:
name='swaroop'
print(delimiter.join(name))
結(jié)果:
s_*_w_*_a_*_r_*_o_*_o_*_p
4 字典
把鍵值連接起來,跟值無關(guān)末患。
例:
ab={
'Swaroop':'swaroop@swaroopch.com',
'Larry':'larry@wall.org',
'Matsumoto':'matz@ruby-lang.org',
'Spammer':'spammer@hotmail.com'
}
print(delimiter.join(ab))
結(jié)果:
Swaroop_*_Larry_*_Matsumoto_*_Spammer
5 集合
例:
bri = set(['brazil', 'russia', 'india'])
print(delimiter.join(bri))
結(jié)果:
india_*_brazil_*_russia
十三研叫、其它
1 元組在定義時,如果只有一個元素璧针,由其后要用逗號
例如:singleton = 2,? 或:singleton=(2,)
2 元組在定義時嚷炉,可以用其它元組作元素
例如:
zoo=('python','elephant','penguin')
New_zoo='monkey','canmel',zoo
3 集合有判別超集的方法
例:print('bri是否為bric的超集:',bri.issuperset(bric))
4 集合的與運(yùn)算
例:print('bri與bric重合的元素為:',bri & bric)
這個運(yùn)算可以用intersection()方法代替:bri.intersection(bric)