python元組、字典、集合基礎(chǔ)知識(shí)筆記_第1頁
python元組、字典、集合基礎(chǔ)知識(shí)筆記_第2頁
python元組、字典、集合基礎(chǔ)知識(shí)筆記_第3頁
python元組、字典、集合基礎(chǔ)知識(shí)筆記_第4頁
python元組、字典、集合基礎(chǔ)知識(shí)筆記_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

元組

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

組使用小括號(hào),列表使用方括號(hào)。

>>>aTuple=('et',99.9)>>>aTuple

('et',77,99.9)

一、訪問元組

二、修改元組

說明:python中不允許修改元組的數(shù)據(jù),包括不能刪除其中的元

素。

三、count,index

index和count與字符串和列表中的用法相同

>>>a=('a','b','c','a','b')>>>a.index('a',1,3)

#注意是左閉右開區(qū)間

Traceback(mostrecentcalllast):

File"<stdin>'\linein<module>

ValueError:tuple.index(x):xnotintuple>>>

a.index('a',1,4)3>>>a.count('b')2>>>a.count('d')0

四、定義只有一個(gè)數(shù)據(jù)的元組

定義只有一個(gè)元素的元組,需要在唯一的元素后寫一個(gè)逗號(hào)

>>>a=(11)>>>all>>>type(a)

int>>>a=(11,)#只有一個(gè)元素的元組,必須要在元素后寫

一個(gè)逗號(hào)>>>a

type(a)

tuple

五、交換兩個(gè)變量的值

#第1種方式,使用中間變量

a=4

b=5

c=0

c=a

a=b

b=c

print(a)

print(b)

#第2種方式,直接交換。

a,b=4,5

a,b=b>a

print(a)

print(b)

字典介紹

一、列表的缺點(diǎn)

當(dāng)存儲(chǔ)的數(shù)據(jù)要?jiǎng)討B(tài)添加、刪除的時(shí)候,我們一般使用列表,但是

列表有時(shí)會(huì)遇到一些麻煩。

#定義一個(gè)列表保存,姓名、性別、職業(yè)

nameList=['xiaoZhang','男'木匠'];

#當(dāng)修改職業(yè)的時(shí)候,需要記憶元素的下標(biāo)

nameList[2]=1鐵匠,

#如果列表的順序發(fā)生了變化,添加年齡

nameList=['xiaoWang''少,',,鐵匠']

#此時(shí)就需要記憶新的下標(biāo),才能完成名字的修改

nampLi[3]='xiaoxiaoWang'

有沒有方法,既能存儲(chǔ)多個(gè)數(shù)據(jù),還能在訪問元素的很方便就能夠

定位到需要的那個(gè)元素呢?

答:

字典

二、字典的使用

定義字典的格式:{鍵1:值1,鍵2:值2,鍵3:值3,??.,鍵n:值n}

變量inf。為字典類型:

info={‘name':‘班長'id':100,'sex':'f'address':'

地球亞洲中國上?!畗

info['name']#字典使用鍵來獲取對應(yīng)的值

說明:

字典和列表一樣,也能夠存儲(chǔ)多個(gè)數(shù)據(jù)

列表中找某個(gè)元素時(shí),是根據(jù)下標(biāo)進(jìn)行的;字典中找某個(gè)元素

時(shí),是根據(jù)‘名字‘(就是冒號(hào):前面的那個(gè)值,例如上面代碼中的

'name'、'id'、'sex')

字典的每個(gè)元素由2部分組成,鍵:值。例如Ihame':'班長

'name'為鍵,'班長為值

鍵可以使用數(shù)字、布爾值、布爾值、元組等不可變數(shù)據(jù)類型,

但是一般習(xí)慣使用字符串

每個(gè)字典里的key都是唯一的,如果出現(xiàn)了多個(gè)key,后面的

value會(huì)覆蓋前一個(gè)key對應(yīng)的value.

在習(xí)慣上:

列表更適合保存多個(gè)商品、多個(gè)姓名、多個(gè)時(shí)間,這樣的相似

數(shù)據(jù);

字典更適合保存一個(gè)商品的不同信息、一個(gè)人的不同信息,這

樣的不同數(shù)據(jù)。

字典的增刪改查

一、查看元素

除了使用key查找數(shù)據(jù),還可以使用get來獲取數(shù)據(jù)

info={'name':'班長'Jage':18}

print(info['age'])#獲取年齡#print(info['sex'])#獲

取不存在的key,會(huì)發(fā)生異常

print(info.get(*sex1))#獲取不存在的key,獲取到空的內(nèi)

容,不會(huì)出現(xiàn)異常

print(info.get(*sex','男'))#獲取不存在的key,可以

提供一個(gè)默認(rèn)值。

注意,獲取默認(rèn)值不會(huì)修改字典內(nèi)容。

二、修改元素

字典的每個(gè)元素中的數(shù)據(jù)是可以修改的,只要通過key找到,即可

修改

demo:

info={'name':'班長1'id':100}

print「修改之前的字典為%s:'%info)

infofid*]=200#為一存在的鍵賦侑就足修改

print「修改之后的字典為%s:‘%info)

結(jié)果:

修改之前的字典為{'namd:‘班長二'id':100)

修改之后的字典為{‘name':'班長'id':200)

三、添加元素

如果在使用變量名「鍵」二數(shù)據(jù)時(shí),這個(gè),鍵”在字典中,不存在,

那么就會(huì)新增這個(gè)元素

demo:添加新的元素

info={'name':,班長’}

print('添加之前的字典為:%s,%info)

info['id']=100#為不存在的鍵賦值就是添加元素

print('添加之后的字典為:%s'%info)

結(jié)果:

添加之前的字典為:{'name,:‘班長〉

添加之后的字典為:{'name,:‘班長'id':100}

四、刪除元素

對字典進(jìn)行刪除操作,有一下幾種:

del

clear()

demo:del刪除指定的元素

info={'name':‘班長','id':100}

print('刪除前,%s'%info)

delinfo['name']#del可以通過鍵刪除字典里的指定元索

print('刪除后,%s'%info)

結(jié)果

刪除前,{‘name':'班長['id':100}

刪除后,{,id,:100)

del刪除整個(gè)字典

info={'name':'monitor','id*:100}

print(,刪除前,%s'%info)

delinfo#del也可以直接刪除變量

print(,刪除后,%s'%info)

結(jié)果

刪除前,{‘name':'monitor\'id':100)

Traceback(mostrecentcalllast):

File"<stdin>'\line1,in<module>

NameError:name'info'isnotdefined

clear清空整個(gè)字典

info={'name':'monitor','id':100}

print('清空前,%s'%info)

info.clear()

print('清空后,%s'%info)

結(jié)果

清空前,{‘name':'monitor*,'id':100)

清空后,{}

字典遍歷

<1>遍歷字典的key(鍵)

<2>遍歷字典的value(值)

<3>遍歷字典的項(xiàng)(元素)

<4>遍歷字典的key-value(鍵值對)

練習(xí)

1.有一個(gè)列表persons,保存的數(shù)據(jù)都是字典

persons=[{'name':'zhangsan''age':18},{'name':

'lisi','age':20},{'name':'wangwu''age':

19},{'name':'jerry','age':21)]

要求讓用戶輸入一個(gè)姓名,如果這個(gè)姓名在列表里存在,就提示用

戶名稱已存在,添加失?。喝绻@個(gè)姓名在列表里不存在,提示讓

用戶輸入年齡,并將月戶輸入的姓名和年齡添加到這個(gè)列表里。

1.有一個(gè)字典dictl={"a":100,"b":200,"c":300},使用代碼,將

字典的key和value互換,變成{100:“a”,200:”b”,300:”c}

參考答案:(使用字典推導(dǎo)式)

dictl={"a":100,"b":200,"c":300)

dict2={v:kfork,vindictl.items())

print(dict2)

set的使用

集合(set)是一個(gè)無序的不重復(fù)元素序列,可以使用大括號(hào){}或

者set()函數(shù)創(chuàng)建集合。

注意:創(chuàng)建一個(gè)空集合必須用set()而不是{},因?yàn)椋怯脕?/p>

創(chuàng)建一個(gè)空字典。

創(chuàng)建格式:

parame={value01,value02,.,,}

或者

set(value)

添加元素

語法格式如下:

s.add(x)

將元素x添加到集合s中,如果元素己存在,則不進(jìn)行任何操作。

>>>thisset=set(("Google""Runoob"?"Taobao"))>>>

thisset.add("Facebook")>>>print(thisset)

{'Taobao','Facebook'?'Google''Runoob'}

還有一個(gè)方法,也可以添加元素,且參數(shù)可以是列表,元組,字典

等,語法格式如下:

s.update(x)

x可以有多個(gè),用逗號(hào)分開。

>>>thisset=set(("Google""Runoob","Taobao"))>>>

thisset.update({1,3})>>>print(thisset)

{1,3,'Google','Taobao','Runoob'}>>>

thisset.update([,4],[,6])>>>print(thisset)

{1,3,4,5,6j'Google''Taobao','Runoob'}

移除元素

語法格式如下:

s.remove(x)

將元素x從集合s中移除,如果元素不存在,則會(huì)發(fā)生錯(cuò)誤。

>>>thisset=set(("Google"^"Runoob","Taobao"))>>>

thisset.remove("Taobao")>>>print(thisset)

{'Google''Runoob')>>>thisset.remove("Facebook")

不存在會(huì)發(fā)生錯(cuò)誤

Traceback(mostrecentcalllast):

File"<stdin>"line1,in<module>

KeyError:'Facebook'

>>>

此外還有一個(gè)方法也是移除集合中的元素,且如果元素不存在,不

會(huì)發(fā)生錯(cuò)誤。格式如下所示:

s.discard(x)

>>>thisset=set(("Google","Runoob","Taobao"))>>>

thisset.discard("Facebook")#不存在不會(huì)發(fā)生鋁誤>>>

print(thisset)

{'Taobao','Google','Runoob'}

我們也可以設(shè)置隨機(jī)刪除集合中的一個(gè)元素,語法格式如下:

s.pop()

thisset=set(("Google","Runoob","Taobao",

"Facebook"))

x=thisset.pop()

print(x)

print(thisset)

set常見方法列表

方法描述

add()為集合添加元素

clear()移除集合中的所有元素

0拷貝一個(gè)集合

pop()隨機(jī)移除元素

remove()移除指定元素

union返回兩個(gè)集合的并集

update()給集合添加元素

difference()返回多個(gè)集合的差集

difference_update()移除集合中的元素,該元素在指定的集合也存二

discard()刪除集合中指定的元素

intersection()返回集合的交集

intersection_update()刪除集合中的元素,該元素在指定的集合中不:

判斷兩個(gè)集合是否包含相同的元素,如果沒有:

isdisjoint()

True,否則返回False0

issubset()判斷指定集合是否為該方法參數(shù)集合的子集。

issuperset()判斷該方法的參數(shù)集合是否為指定集合的子集

symmetric_difference()返回兩個(gè)集合中不重復(fù)的兀素集合。

移除當(dāng)前集合中在另外一個(gè)指定集合相同的元:

symmetric_difference_update()

另外一個(gè)指定集合中不同的元素插入到當(dāng)前集■

執(zhí)行字符串

使用Python內(nèi)置的eval函數(shù),可以執(zhí)行字符串里的Python代碼。

使用這種方式,可以將字符串轉(zhuǎn)換成為其他類型的數(shù)據(jù)。

x='1+1'

print(eval(x))#2

print(type(eval(x)))#<class'int'>

y='{"name":"zhangsan","age":18}'

print(eval(y))

print(type(eval(y)))#<class'diet'>

print(eval('1>2'))#False

eval('input(“請輸入您的姓名

轉(zhuǎn)換成為字符串

JSON(JavaScriptObjectNotation,JS對象簡譜)是一種輕量級的數(shù)

據(jù)交換格式,它基于ECMAScript的一個(gè)子集,采用完全獨(dú)立于編

程語言的文本格式來存儲(chǔ)和表示數(shù)據(jù)。JSON本質(zhì)是一個(gè)字符串

JSON的功能強(qiáng)大,使用場景也非常的廣,目前我們只介紹如何使

用Python的內(nèi)置JSON模塊,實(shí)現(xiàn)字典、列表或者元組與字符串

之間的相互轉(zhuǎn)換。

使用json的dumps方法,可以將字典、列表或者元組轉(zhuǎn)換成為字

符串。

importjson

person={'name':'zhangsan','age':18}

x=json.dumps(person)

print(x)#{"name":"zhangsan","age":18)

print(type(x))#<class'str'>

nums=[1,9,0,4,:

y=json.dumps(nums)

print(y)#[1,9,0,4,7]

print(type(y))#<class'str'>

words=('hello','good','yes')

z=json.dumps(words)

print(z)#["hello","good","yes"]

print(type(z))#<class'str'>

使用json的loads方法,可以將格式正確的字符串轉(zhuǎn)換成為字典、

列表。

x='("name":"zhangsan","age":18},

person=json.loads(x)

print(person)#{'name':'zhangsan''age':18)

print(type(person))#<class'diet'>

y='[1,9,0,4,7],

nums=json.loads(y)

print(nums)#[1,9,0,4,7]

print(type(nums))#<class'list'>

字符串、列表、元組、字典和集合,它們有很多相同點(diǎn),都是由多

個(gè)元素組合成的一個(gè)可迭代對象,它們都有一些可以共同使用的方

法。

算數(shù)運(yùn)算符

在Python里,常見的算數(shù)運(yùn)算符:,有一些可以使用于可送代對象,

它們執(zhí)行的結(jié)果也稍有區(qū)別。

運(yùn)算Python表達(dá)

結(jié)果描述支持的數(shù)據(jù)

符式

+[1,2]+[3,4][1,2,3,4]合并字符串、列表、

(1,2,3,4)-

-{1,4}集合求差集集合

{2,3}

['Hi!','Hi!','Hif,

*['Hi!']*4復(fù)制字符串、列表、

'Hi!']

字符串、列表、

in3in(1,2,3)True元素是否存在

字典

4notin(1,2,元素是否不存字符串、列表、

notinTrue

3)在字典

加法運(yùn)算符可以用于字符串、列表和元組,用來拼接多個(gè)可迭代對

象,不能用于字典和笑合(思考:為什么字典和集合不能使用)。

>>>"hello"+"world"'helloworld'>?[1,2]+[3,4]

[1,2,3,4]?>('a','b')+('c','d')

a','b','c','d')

減法只能用于集合里,用來求兩個(gè)集合的差集。

?>{1,6,9,10,12,3}-{4,8,2,1,3)

{%10,12,6)

*

加法運(yùn)算符可以用于字符串、列表和元組,用來將可迭代對象重復(fù)

多次,同樣不能用于字典和集合。

>>>'ab'*4'ababab'>>>口,2]*4

[1,2,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論