元組嘉汰,字典皿曲,淺復(fù)制,集合

@[TOC]

元組(tuple)

Python的元組與列表類似粤铭,不同之處在于元組的元素不能修改挖胃。

元組使用小括號,列表使用方括號。

元組的創(chuàng)建

元組創(chuàng)建很簡單酱鸭,只需要在括號中添加元素吗垮,并使用逗號隔開即可

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = ("a", "b", "c", "d")
tup4 = 1,2,3,4

元組中只包含一個元素時,需要在元素后面添加逗號

tup1 = 50,
tup2 = (50,)

元組索引

元組與字符串類似凹髓,下標索引從0開始烁登,可以進行截取,組合等蔚舀。

訪問元組
元組可以使用下標索引來訪問元組中的值饵沧,如下實例:

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
 
print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])

以上實例輸出結(jié)果:

tup1[0]:  physics
tup2[1:5]:  (2, 3, 4, 5)

元組解包

元組解包指把元組每一個元素都賦值給一個變量

tup1 = (1,2,3,4)
a,b,c,d = tup1
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)

結(jié)果:

a= 1
b= 2
c= 3
d= 4

必須讓變量數(shù)量對應(yīng)元素數(shù)量,否則用*來讓一個變量擁對應(yīng)多個元素赌躺,形式為列表形式

tup1 = (1,2,3,4)
a,b,*c = tup1
print('a=',a)
print('b=',b)
print('c=',c)
tup1 = (1,2,3,4)
a,*b,c = tup1
print('a=',a)
print('b=',b)
print('c=',c)
tup1 = (1,2,3,4)
*a,b,c = tup1
print('a=',a)
print('b=',b)
print('c=',c)

以上實例輸出結(jié)果:

a= 1
b= 2
c= [3, 4]
a= 1
b= [2, 3]
c= 4
a= [1, 2]
b= 3
c= 4

字典

字典的數(shù)據(jù)結(jié)構(gòu)為映射(mapping)
字典的作用和列表一樣狼牺,用來存儲數(shù)據(jù),但是列表的查詢性能很差礼患,而字典相反

字典外層是?括號{}是钥,?等號賦值
列表中的元素是?成?體的,?字典的元素是由鍵值對構(gòu)成的缅叠,?英?冒號連接悄泥。有多少個鍵值對就有多少個元素。

如'?郭': 90痪署,其中我們把'?郭'叫鍵(key)码泞,90叫值(value)
每個鍵值對我們可以稱為一項(item)

鍵值對之間?逗號隔開

所存儲的兩種數(shù)據(jù)若存在??對應(yīng)的情況兄旬,?字典儲存會更加?便狼犯。唯?的鍵和對應(yīng)的值 形成的整體,我們就叫做【鍵值對】领铐。鍵具備唯?性悯森,?值可以重復(fù)。 字典中數(shù)據(jù)是隨機排列的(無序的绪撵,所以無法像列表或者元組一樣通過索引獲得元素)

字典的創(chuàng)建

  • 直接用變量加花括號創(chuàng)建
    如下:
dct = {'name':'小王','age':18,'job':'programmer',
       'home add':'天津'}
print(dct)

輸出結(jié)果:

{'name': '小王', 'age': 18, 'job': 'programmer', 'home add': '天津'}
  • 通過dict函數(shù)創(chuàng)建
    如下:
dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
print(dct)
dct1 = dict([('name','age'),('小王',18)])   #雙值子序列也能轉(zhuǎn)換為字典
print(dct1)

輸出結(jié)果:

{'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津'}
{'name': 'age', '小王': 18}

獲取字典元素

字典是無序的瓢姻,所以通過索引無法獲取字典中的值,但是可以通過字典中鍵值對的鍵來獲取
如下:

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
print(dct['name'])

以上實例輸出結(jié)果:

小王

還可以通過get方法獲取音诈,get(key,default)
get方法是通過鍵來獲取字典當中的值幻碱,若是沒有,則返回None细溅,或者通過設(shè)置第二個參數(shù)(默認值)來返回默認值內(nèi)容
如下:

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
print(dct.get('name'))
print(dct.get('小張'))
print(dct.get('小張'),'抱歉褥傍,字典中沒有這個鍵')

以上實例輸出結(jié)果:

小王
None
None 抱歉,字典中沒有這個鍵

修改字典

直接修改或添加

字典中的鍵不能重復(fù)
可以直接用獲取key改變value
如果沒有這個鍵喇聊,則可以增加字典中的鍵值對
如下:

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
print('修改前',dct)
dct['name'] = '小張'
dct['sex'] = '男'
print('修改后',dct)

結(jié)果:

修改前 {'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津'}
修改后 {'name': '小張', 'age': 18, 'job': '程序員', 'hone_add': '天津', 'sex': '男'}

通過setdefault(key,default)方法添加key:value

如果這個key已經(jīng)存在恍风,則返回key值,對字典沒有任何影響
如果key不存在,向字典添加這個key并設(shè)置value朋贬,返回value
如下:

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
print('修改前',dct)
dct.setdefault('name','小張')
dct.setdefault('sex','男')
print('修改后',dct)

結(jié)果:

修改前 {'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津'}
修改后 {'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津', 'sex': '男'}

update方法添加字典

update方法將其他字典添加到當前字典中
如下:

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
dct1 = dict(sex='男')
print('修改前',dct)
dct.update(dct1)
print('修改后',dct)

結(jié)果:

修改前 {'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津'}
修改后 {'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津', 'sex': '男'}

刪除

del

刪除字典中的key:value

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
print('修改前',dct)
del dct['name']
print('修改后',dct)
修改前 {'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津'}
修改后 {'age': 18, 'job': '程序員', 'hone_add': '天津'}
popitem

隨機刪除字典中的一個鍵值對凯楔,一般刪除最后一個
刪除后會將刪除的值作為返回值返回(元組形式)

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
print('修改前',dct)
dct.popitem()
print('修改后',dct)
修改前 {'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津'}
修改后 {'name': '小王', 'age': 18, 'job': '程序員'}
pop

通過key來刪除key:value,刪除的值作為返回值返回

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
print('修改前',dct)
fan = dct.pop('name')
print('返回值:',fan)
print('修改后',dct)
修改前 {'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津'}
返回值: 小王
修改后 {'age': 18, 'job': '程序員', 'hone_add': '天津'}
clear()

清空字典

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
print('修改前',dct)
dct.clear()
print('修改后',dct)
修改前 {'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津'}
修改后 {}

遍歷字典

keys()

keys()返回的是一個序列,保存的是字典中所有的鍵

dct = {'name':'小王','age':'18','job':'程序員'}
for i in dct.keys():
    print(i)
name
age
job
values()

values()返回的是一個序列锦募,保存的是字典中所有的值

dct = {'name':'小王','age':'18','job':'程序員'}
for i in dct.values():
    print(i)
小王
18
程序員
items()

items()返回的是一個序列摆屯,返回字典的所有項,包括雙值子序列

dct = {'name':'小王','age':'18','job':'程序員'}
for i,j in dct.items():
    print(i,':',j)
name : 小王
age : 18
job : 程序員

淺復(fù)制

淺復(fù)制復(fù)制以后與原對象之間是獨立的糠亩,修改一個并不會影響另一個
普通復(fù)制:

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
#普通復(fù)制
dct1 = dct
dct['name'] = '小張'
print('dct:',dct,id(dct))
print('dct1:',dct1,id(dct1))
dct: {'name': '小張', 'age': 18, 'job': '程序員', 'hone_add': '天津'} 1402806635136
dct1: {'name': '小張', 'age': 18, 'job': '程序員', 'hone_add': '天津'} 1402806635136

普通復(fù)制兩個id相同鸥拧,一方修改另一個也會改變
淺復(fù)制:

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
#淺復(fù)制
dct1 = dct.copy()
dct['name'] = '小張'
print('dct:',dct,id(dct))
print('dct1:',dct1,id(dct1))
dct: {'name': '小張', 'age': 18, 'job': '程序員', 'hone_add': '天津'} 2238110323136
dct1: {'name': '小王', 'age': 18, 'job': '程序員', 'hone_add': '天津'} 2237827343488

淺復(fù)制雙方id不同,一方修改另一方不會改變
但是削解,如果嵌套字典富弦,則會只復(fù)制第一層字典內(nèi)容
如:

dct = {'n':{'name':'小王','age':'18'},'job':'程序員'}
#淺復(fù)制
dct1 = dct.copy()
dct['n']['name'] = '小張'
print('dct:',dct,id(dct))
print('dct1:',dct1,id(dct1))

字典內(nèi)的嵌套字典會隨一方改變而改變

dct: {'n': {'name': '小張', 'age': '18'}, 'job': '程序員'} 1191683056832
dct1: {'n': {'name': '小張', 'age': '18'}, 'job': '程序員'} 1191683057152

通用方法

  • len 獲取字典中鍵值對個數(shù)
  • in 判斷字典中是否有這個鍵
  • in not 判斷字典中是否沒有這個鍵

如以下:

dct = dict(name='小王',age=18,job='程序員',hone_add='天津')
print('字典中鍵值對的個數(shù)是',len(dct))
print('home_add' in dct)
print('home_add'  not in dct)

以上實例輸出結(jié)果

字典中鍵值對的個數(shù)是 4
False
True

集合(set)

  • 集合中的元素是無序的
  • 集合中不能出現(xiàn)重復(fù)的元素
  • 集合只能存儲不可變序列

集合的創(chuàng)建

集合和字典相同都用{},但是集合沒有鍵氛驮,只有元素值
集合中存貯列表會報錯腕柜,因為只能存貯不可變序列,而列表是可變的
直接創(chuàng)建:

se = {1,2,3,4}
print(se,type(se))
{1, 2, 3, 4} <class 'set'>

通過set()創(chuàng)建:

se = set([1,2,3,4])  #這里函數(shù)中用列表矫废,因為要存儲序列
print(se,type(se))
s = set({'name':'小王','age':18})   #用set函數(shù)將字典轉(zhuǎn)換為集合僅會保留字典的鍵
print(s)

{1, 2, 3, 4} <class 'set'>
{'name', 'age'}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盏缤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蓖扑,更是在濱河造成了極大的恐慌唉铜,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件律杠,死亡現(xiàn)場離奇詭異潭流,居然都是意外死亡,警方通過查閱死者的電腦和手機柜去,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門灰嫉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嗓奢,你說我怎么就攤上這事讼撒。” “怎么了股耽?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵根盒,是天一觀的道長。 經(jīng)常有香客問我物蝙,道長炎滞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任茬末,我火速辦了婚禮厂榛,結(jié)果婚禮上盖矫,老公的妹妹穿的比我還像新娘。我一直安慰自己击奶,他們只是感情好辈双,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柜砾,像睡著了一般湃望。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痰驱,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天证芭,我揣著相機與錄音,去河邊找鬼担映。 笑死废士,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蝇完。 我是一名探鬼主播官硝,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼短蜕!你這毒婦竟也來了氢架?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤朋魔,失蹤者是張志新(化名)和其女友劉穎岖研,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體警检,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡孙援,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了解滓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赃磨。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡筝家,死狀恐怖洼裤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溪王,我是刑警寧澤腮鞍,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站莹菱,受9級特大地震影響移国,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜道伟,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一迹缀、第九天 我趴在偏房一處隱蔽的房頂上張望使碾。 院中可真熱鬧,春花似錦祝懂、人聲如沸票摇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矢门。三九已至,卻和暖如春灰蛙,著一層夾襖步出監(jiān)牢的瞬間祟剔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工摩梧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留物延,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓仅父,卻偏偏與公主長得像教届,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子驾霜,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354