2018-10-09(tuple,dict,set)

什么時(shí)候用容器類(lèi)型的數(shù)據(jù)喧半? ---> 需要同時(shí)保存多個(gè)數(shù)據(jù)的時(shí)候 ? ? ?? 什么時(shí)候用列表灾常? ---> 保存的多個(gè)數(shù)據(jù)是同一類(lèi)的數(shù)據(jù)(不需要區(qū)分) ? ? 什么時(shí)候用字典? ---> 保存的多個(gè)數(shù)據(jù)是不同類(lèi)的數(shù)據(jù) (需要區(qū)分)

一蓬坡、tuple

1.什么是元祖

使用()將多個(gè)元素括起來(lái)骏啰,多個(gè)元素之間用逗號(hào)隔開(kāi)

a.

容器,可以同時(shí)存儲(chǔ)多個(gè)數(shù)據(jù),不可變的银舱,有序的

不可變 ---> 不能增刪改

有序 ---> 可以通過(guò)下標(biāo)獲取元素

b.

元素瘪匿,可以是任何類(lèi)型的數(shù)據(jù)

tuple1= (1,'yue',True, [1,2],lambda s:s*2)

print(tuple1)

注意

1.

如果元祖的元素只有一個(gè)的時(shí)候,必須在元素的后面加逗號(hào)

tuple2= (100,)

print(type(tuple2))

2.

多個(gè)數(shù)據(jù)直接用逗號(hào)隔開(kāi)寻馏,表示的也是一個(gè)元祖

tuple2= 10,20,'abc'

print(tuple2,type(tuple2))

?2棋弥、元素的查

元祖的元素不支持增刪改

列表獲取元素的方式,元祖都支持:元祖[下標(biāo)], 元祖[:], 元祖[::]

遍歷:和列表一樣

tuple2= ('星期一','星期二','星期三','星期四')

print(tuple2[1])

print(tuple2[2:])

print(tuple2[::-1])

# 遍歷

for item in tuple2:

? ? print(item)


index= 0

while index< len(tuple2):

? ? print(tuple2[index])

? ? index+= 1

補(bǔ)充:獲取部分元素

可以通過(guò)相同的變量個(gè)數(shù)诚欠,來(lái)獲取元祖中的元素

x, y= (10,20)

print(x, y)

x, y, z= (10,20,30)

x, y= 10,20

# 1.應(yīng)用:交換兩個(gè)數(shù)的值

a= 10

b= 20

# 錯(cuò)誤寫(xiě)法

# a = b? # a = 20

# b = a? # b = 20

# 方法1:

# t = a? # t = 10

# a = b? # a = 20

# b = t? # b = 10

# 方法2:

a, b= b, a ? ? # a,b = (b,a) = (20, 10)

可以通過(guò)在變量前加*來(lái)獲取部分的元素(適用于列表)


tuple2= ('小明',90,89,67,100)

name,*score= tuple2

print(name, score)

tuple2= (90,89,67,100,'小明')

*score, name= tuple2

print(score, name)

tuple2= ['boy',15300022673,90,89,67,100,'小明']

sex, tel,*score, name= tuple2

print(sex, name, score)

"""

(了解)

可以通過(guò)在列表或者元祖前加*,來(lái)展開(kāi)列表中的元素

"""

tuple3= (1,2,3,4)

print(*tuple3)

list1= ['abc',100,200]

print(*list1)

?3.元祖的運(yùn)算

+, *, ==, is, in, not in ---> 和列表一樣

print((1,2,3)+ ('a','b'))

print((1,2)* 3)

print((1,2,3)== (1,2,3))

print((1,2,3)is (1,2,3))

print(1 in (1,2,3))

print(1 not in (1,2,3))

4.len(), max(), min()

tuple3= 10,230,100,78,34

print(len(tuple3))

print(max(tuple3))

print(min(tuple3))

5.tuple()

所有的序列都可以轉(zhuǎn)換成元祖顽染,注意,字典只能將key值作為元祖元素

print(tuple('abhdnc'))

print(tuple([1,23,90]))

print(tuple(range(5)))

print(tuple({'a': 100,'b': 200}))

6.sorted()

可以通過(guò)sorted()方法轰绵,對(duì)元祖進(jìn)行排序粉寞,產(chǎn)生一個(gè)新的列表

tuple3= 10,230,100,78,34

new= sorted(tuple3)

print(new, tuple3)

二、dict

1.什么是字典(dict)

"""

字典是一個(gè)容器類(lèi)的數(shù)據(jù)類(lèi)型左腔,可以用來(lái)存儲(chǔ)多個(gè)數(shù)據(jù)(以鍵值對(duì)的形式存儲(chǔ))唧垦。可變的翔悠,無(wú)序的

{key1:value1, key2:value2...}

可變 ---> 可以增刪改

無(wú)序 ---> 不能通過(guò)下標(biāo)獲取值

鍵(key): 用來(lái)定位值的业崖。要求只能是不可變的數(shù)據(jù)類(lèi)型(數(shù)字,字符串蓄愁,元祖...)双炕。是唯一的

值(value): 存儲(chǔ)的數(shù)據(jù)〈樽ィ可以是任何類(lèi)型的數(shù)據(jù)

"""

# person1 = ['yuting', 18, 90, 100, '1547262889']

person2= {'name': 'yuting','age': 18,'face': 90,'score': 100,'tel': '1547262889','name':'小花'}

dict1= {10: 893,'abc': 100, (1,23): 'abc'}

print(person2)

dict1= {}

print(dict1)

2妇斤、字典的增刪改查

1.查(獲取鍵值對(duì)的value)

"""

獲取字典的值,必須通過(guò)key來(lái)獲取

a.字典[key]? ---> 獲取key對(duì)應(yīng)的值

注意:key值必須是存在的,否則會(huì)報(bào)KeyError

"""

student= {'name': '小明','age': 30,'study_id': 'py001','sex': 'boy'}

print(student['name'])

print(student['sex'])

# print(student['score'])? # KeyError: 'score'

"""

b.字典.get(key)? ---> 通過(guò)key獲取值

注意:key值不存在的時(shí)候不會(huì)報(bào)錯(cuò)站超,結(jié)果是None

"""

print(student.get('age'), student.get('study_id'))

print(student.get('score'))

"""

確定key一定存在就是使用[]語(yǔ)法荸恕,key可能不存在的時(shí)候使用get語(yǔ)法

"""

c.直接遍歷字典(推薦使用)

通過(guò)for-in遍歷字典拿到的是key值

"""

for xin student:

? ? print(x, student[x])

d.其他遍歷方式(了解)

# 直接遍歷拿到值

for valuein student.values():

? ? print(value)

# 直接拿到key和value

print(student.items())

for key, valuein student.items():

? ? print(key, value)

2.增(添加鍵值對(duì))

"""

字典[key] = 值(key不存在)

"""

car= {}

car['color']= 'yellow'

print(car)

car['price']= 300000

print(car)

3.修改(修改值)

"""

字典[key] = 新值 (key存在)

"""

car['color']= 'red'

print(car)

4.刪 (刪除鍵值對(duì))

a.

del 字典[key]? ---> 通過(guò)key刪除鍵值對(duì)

student= {'name': '小明','age': 30,'study_id': 'py001','sex': 'boy'}

del student['age']

print(student)

b.

字典.pop(key)? ---> 取出key對(duì)應(yīng)的值(實(shí)質(zhì)還是刪除key對(duì)應(yīng)的鍵值對(duì))

name= student.pop('name')

print(student, name)

3.字典相關(guān)運(yùn)算

==: 判斷兩個(gè)字典的值是否相等

is: 判斷兩個(gè)字典的地址是否相等

in 和 not in: key in 字典 / key not in 字典 ---> 判斷key是否存在

"""

dic1= {'a': 1,'b': 2}

aa= dic1

print(dic1is aa)

print({'a': 100,'b': 200}== {'b': 200,'a': 100})

print({'a': 100,'b': 200}is {'b': 200,'a': 100})

print('abc' in {'abc': 100,'a': 200})# True

print('abc' in {'100': 'abc','a': 200})# False

4.字典相關(guān)的函數(shù)和方法

1.

len(字典) --> 獲取鍵值對(duì)的個(gè)數(shù)

dict1= {'a': 1,'b': 2,'c': 3,'d': 4}

print(len(dict1))

2.

字典.clear() --> 清空字典

dict1.clear()

print(dict1)

3.

字典.copy()? --> 將字典中的鍵值對(duì)復(fù)制一份產(chǎn)生一個(gè)新的字典

dict1= {'a': 1,'b': 2,'c': 3,'d': 4}

dict2= dict1.copy()

print(dict2, dict1is dict2)

4.

dict.fromkeys(序列, 值) --> 創(chuàng)建一個(gè)字典,將序列中的每個(gè)元素作為key死相,值作為value

dict3= dict.fromkeys('xyz',100)

print(dict3)

dict3= dict.fromkeys(['aa','bb','cc'], (1,2))

print(dict3)

5.

字典.get(key)? --> key不存在取None

字典.get(key,默認(rèn)值) --> key不存在取默認(rèn)值

student= {}

print(student.get('name'))

print(student.get('name','無(wú)名'))

6.

字典.values()? --> 返回所有值對(duì)應(yīng)的序列

字典.keys() --> 返回所有鍵對(duì)應(yīng)的序列

字典.items() --> 將鍵值對(duì)轉(zhuǎn)換成元祖融求,作為一個(gè)序列的元素

注意:返回的都不是列表,是其他類(lèi)型的序列

dict1= {'a': 1,'b': 2,'c': 3,'d': 4}

items= list(dict1.items())

print(items,type(items))

print(dict1.items(),type(dict1.items()))

7.

字典.setdefault(key)? --> 添加鍵值對(duì)算撮,鍵是key生宛,值是None

字典.setdefault(key,value)? --> 添加鍵值對(duì),鍵是key肮柜,值是value

注意:key存在的時(shí)候陷舅,對(duì)字典不會(huì)有任何操作(不會(huì)修改key對(duì)應(yīng)的值)

dict1= {'a': 1,'b': 2,'c': 3,'d': 4}

dict1.setdefault('aa')

print(dict1)

8.

字典1.update(字典2) --> 使用字典2中鍵值對(duì)去更新字典1。(已經(jīng)存在的key就更新审洞,不存在就添加)

"""

dict1= {'a': 1,'b': 2}

dict2= {'b': 200,'c': 100}

dict1.update(dict2)

print(dict1)

三莱睁、set

1.什么是集合(set)

容器,可以同時(shí)存儲(chǔ)多個(gè)數(shù)據(jù),可變的芒澜,無(wú)序的,元素是唯一的

可變 --> 增刪改

無(wú)序 --> 不能通過(guò)下標(biāo)獲取元素

唯一 --> 自帶去重的功能

{元素1, 元素2...}

元素:只能是不可變的數(shù)據(jù)

"""

set1= {10,20,'abc', (10,200),10}

print(set1)# {(10, 200), 10, 20, 'abc'}

# set2 = {}? # 這個(gè)是空的字典

2.集合的增刪改查

a.

查(獲取元素)

集合不能單獨(dú)的獲取一個(gè)元素仰剿,也不能切片,只能通過(guò)for-in來(lái)遍歷

for x in set1:

? ? print(x)

b.

增(添加元素)

集合.add(元素) --> 在集合中添加一個(gè)元素

set1= {1,2,3}

set1.add(4)

print(set1)

集合1.update(序列)? --> 將序列中的元素添加到集合1中

set1.update({'a','b'})

print(set1)

set1.update('0987')

print(set1)

set1.update(['abc','aaa'])

print(set1)

set1.update({'name': 1,'age': 18})# 字典只添加key

print(set1)

3.刪(刪除元素)

集合.remove(元素) --> 刪除指定的元素

set1.remove(1)

print(set1)

?4.改(集合不能改)

2撰糠、集合相關(guān)的運(yùn)算

包含酥馍,交集、并集阅酪、差集旨袒、補(bǔ)集

1.包含

集合1 >= 集合2 ---> 判斷集合1之中是否包含集合2

集合2 <= 集合2 ---> 判斷集合2之中是否包含集合1

set1= {1,2,3,4,5,10}

set2= {3,4,1}

print(set1>= set2)

2.交集 -> &

& --> 求兩個(gè)集合公共的部分

set1= {1,2,3,4,5}

set2= {1,2,3,10,20}

print(set1& set2)

3.求并集

| --> 求兩個(gè)集合的和

print(set1| set2)

4.求差集

集合1-集合2 --> 求集合1中除了集合2以外的部分

print(set1- set2)

5.求補(bǔ)集

^ --> 求兩個(gè)集合除了公共部分以外的部分

print(set1^ set2)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市术辐,隨后出現(xiàn)的幾起案子砚尽,更是在濱河造成了極大的恐慌,老刑警劉巖辉词,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件必孤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瑞躺,警方通過(guò)查閱死者的電腦和手機(jī)敷搪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)幢哨,“玉大人赡勘,你說(shuō)我怎么就攤上這事±塘” “怎么了闸与?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵猴抹,是天一觀(guān)的道長(zhǎng)玖瘸。 經(jīng)常有香客問(wèn)我痊臭,道長(zhǎng)缕粹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任拷邢,我火速辦了婚禮袱院,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞭稼。我一直安慰自己坑填,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布弛姜。 她就那樣靜靜地躺著,像睡著了一般妖枚。 火紅的嫁衣襯著肌膚如雪廷臼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,231評(píng)論 1 299
  • 那天绝页,我揣著相機(jī)與錄音荠商,去河邊找鬼。 笑死续誉,一個(gè)胖子當(dāng)著我的面吹牛莱没,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播酷鸦,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼饰躲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了臼隔?” 一聲冷哼從身側(cè)響起嘹裂,我...
    開(kāi)封第一講書(shū)人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摔握,沒(méi)想到半個(gè)月后寄狼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氨淌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年泊愧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盛正。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡删咱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛮艰,到底是詐尸還是另有隱情腋腮,我是刑警寧澤雀彼,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站即寡,受9級(jí)特大地震影響徊哑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜聪富,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一莺丑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧墩蔓,春花似錦梢莽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至阵面,卻和暖如春轻局,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背样刷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工仑扑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人置鼻。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓镇饮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親箕母。 傳聞我的和親對(duì)象是個(gè)殘疾皇子储藐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一、快捷鍵 ctr+b 執(zhí)行ctr+/ 單行注釋ctr+c ...
    o_8319閱讀 5,814評(píng)論 2 16
  • 增司蔬、刪邑茄、改、查 1.修改列表元素 通過(guò)下標(biāo)獲取元素俊啼,然后重新賦值: 列表名[下標(biāo)] = 新的值注意: 這兒的下標(biāo)不...
    zzzsssr閱讀 346評(píng)論 0 3
  • 一肺缕、列表 增,刪授帕,改同木,查 1.修改列表元素 '''通過(guò)下標(biāo)獲取元素,然后重新賦值:列表名[下標(biāo)]=新的值 '''n...
    燒了回憶取暖丶閱讀 246評(píng)論 0 2
  • 各位親親跛十,如果我的公眾號(hào)做的好的話(huà)彤路,可以推薦給朋友的呢~ 近期好多公眾號(hào)被封了 防止被封,請(qǐng)加備用微信號(hào) dong...
    Lli_17cf閱讀 519評(píng)論 0 1
  • 顏小姐收到一通信用卡消費(fèi)確認(rèn)電話(huà)芥映,在得知消費(fèi)金額后洲尊,她感到非常突兀远豺。 那是好看先生的杰作。當(dāng)然是顏小姐授權(quán)...
    弼馬won閱讀 383評(píng)論 0 1