python中的組合數(shù)據(jù)類(lèi)型、函數(shù)詳解
python的組合數(shù)據(jù)類(lèi)型
python里有三種組合數(shù)據(jù)類(lèi)型:列表、元組和字典。列表上一篇博客我已經(jīng)介紹過(guò)了。
1、元組
元組和列表是比較相似的,可以存放多種數(shù)據(jù)類(lèi)型,只是不能進(jìn)行刪除、添加元素等操作。元組使用形式:
(元素1,元素2,元素3...)
元組類(lèi)型用tuple表示,可以用tuple()創(chuàng)建一個(gè)空的元組或者進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換。
2、字典
字典類(lèi)型也是與列表相似,存放多種數(shù)據(jù)類(lèi)型,但是以鍵值對(duì)的方式存放:
{鍵1:值1,鍵2:值2,鍵3:值3,...}
字典中鍵必須是獨(dú)一無(wú)二的,不能隨意修改,因此鍵的數(shù)據(jù)類(lèi)型不能是列表和字典;值可以與相同的,可以是任意數(shù)據(jù)類(lèi)型。字典數(shù)據(jù)類(lèi)型用dict表示,可以用dict()表示一個(gè)空的字典。
a=dict()#創(chuàng)建一個(gè)空字典 a[1]="張三"#創(chuàng)立一個(gè)鍵為1,值是張三的鍵值對(duì) print(a[1])#打印a[1]鍵值對(duì)
1、字典類(lèi)型的方法:
.clear():刪除字典中元素,得到一個(gè)空字典。若要?jiǎng)h除整個(gè)字典可以使用保留字del。如del a。
.get(參數(shù)1,參數(shù)2):查詢(xún)字典中鍵為參數(shù)1的值,若查找成功則返回鍵對(duì)應(yīng)的值;若失敗則返回參數(shù)2,如果沒(méi)輸入?yún)?shù)2,則返回none。
.keys():獲得字典中所有鍵的信息。
.value():獲得字典中所有的值信息。
.item():獲取字典中所有的鍵值對(duì)。
.pop(參數(shù)):刪除字典中鍵為參數(shù)的鍵值對(duì),同時(shí)返回這個(gè)鍵值對(duì)的值。
2、字典的遍歷:

之前的博客講過(guò),print()函數(shù)中有一個(gè)默認(rèn)參數(shù)end="\n"用來(lái)?yè)Q行,這里我用end=""表示不換行,用end="\t"表示縮進(jìn)。
3、數(shù)據(jù)的維度
在python中列表可以表示一維和二維的數(shù)據(jù),字典可以表示高維的數(shù)據(jù)。
4、項(xiàng)目案例:學(xué)生投票系統(tǒng)
l=[] #創(chuàng)建一個(gè)列表用于存儲(chǔ)學(xué)生姓名
while True:
name=input("請(qǐng)輸入投票的名字:")
if name!="結(jié)束":
l.append(name)
else:
break #while循環(huán)來(lái)統(tǒng)計(jì)投票直到輸入結(jié)束
b=dict() #創(chuàng)建一個(gè)空的字典
for c in l:
b[c]=b.get(c,0)+1 #依次遍歷列表中的名字,每出現(xiàn)一次,在字典中的值加一
print(b) #輸出字典函數(shù)
函數(shù)相當(dāng)于為了實(shí)現(xiàn)特定功能而編寫(xiě)的一個(gè)小工具,避免了每次實(shí)現(xiàn)該功能都要重復(fù)寫(xiě)代碼。前面用過(guò)的print()是python已經(jīng)寫(xiě)好的內(nèi)置函數(shù)。我們也可以自定義新的函數(shù),形式如下:
def 函數(shù)名(參數(shù)):
代碼塊
return 返回值1、形參與實(shí)參:
定義函數(shù)時(shí)的參數(shù)稱(chēng)之為形參,調(diào)用函數(shù)時(shí)輸入的函數(shù)稱(chēng)之為實(shí)參。
2、默認(rèn)參數(shù):
定義函數(shù)時(shí)給形參賦的值。這樣調(diào)用函數(shù)的時(shí)候,如果沒(méi)給形參賦值,函數(shù)會(huì)使用默認(rèn)參數(shù);如果給這個(gè)形參賦了值,會(huì)覆蓋默認(rèn)參數(shù)。
3、可變參數(shù):
不確定函數(shù)中需要接受的參數(shù)個(gè)數(shù)時(shí),可以使用可變參數(shù),可變參數(shù)會(huì)以元組的數(shù)據(jù)類(lèi)型來(lái)接受參數(shù)。正因?yàn)椴淮_定參數(shù)的個(gè)數(shù),可變參數(shù)必須要放在必填參數(shù)的右邊,確保必填參數(shù)接收完數(shù)據(jù),再將剩下的數(shù)據(jù)傳給可變參數(shù),形式:*參數(shù)。
4、關(guān)鍵字參數(shù):
關(guān)鍵字參數(shù)和可變參數(shù)類(lèi)似,區(qū)別在于以字典類(lèi)型來(lái)存儲(chǔ)接收到的數(shù)據(jù),因此傳遞給關(guān)鍵字參數(shù)的數(shù)據(jù)需要包含鍵和值,鍵和值用等號(hào)連接。使用形式:**參數(shù)。
5、變量作用范圍可能產(chǎn)生的問(wèn)題:
函數(shù)中定義的變量為局部變量。①如果函數(shù)中沒(méi)有定義和函數(shù)外部定義的全局變量a,函數(shù)中可以正常使用全局變量a。②如果函數(shù)內(nèi)部和外部都定義了變量a,但是函數(shù)內(nèi)部先定義局部變量再使用,會(huì)正常使用局部變量a。③如果函數(shù)內(nèi)部和外部同時(shí)定義了變量a,而且函數(shù)先使用變量a,再去定義一個(gè)局部變量a,這時(shí)運(yùn)行代碼會(huì)報(bào)錯(cuò)a未被定義:

原因:
Python 中變量的作用域遵循LEGB 原則,對(duì)于全局變量(Global)和函數(shù)局部變量(Local):
①函數(shù)內(nèi)未定義同名局部變量時(shí),會(huì)向上查找全局變量;
②函數(shù)內(nèi)定義了同名局部變量時(shí),該變量會(huì)被標(biāo)記為局部變量,且 Python沒(méi)有 “變量提升” 機(jī)制(和 JavaScript 不同),必須先定義再使用,否則報(bào)錯(cuò)。
6、global聲明全局變量
上面變量變量作用范圍的問(wèn)題,其實(shí)也是因?yàn)殡m然局部變量和全局變量同名,但在內(nèi)存使用的不是同一片空間。在函數(shù)內(nèi)部使用global聲明和全局變量a同名的變量,此時(shí)局部變量和全局變量a占用同一片存儲(chǔ)空間,在函數(shù)內(nèi)部對(duì)a進(jìn)行修改,外部的全局變量a也會(huì)隨之改變。
7、導(dǎo)入其他模塊的函數(shù)
如果自己不想寫(xiě),或者函數(shù)很復(fù)雜,可以導(dǎo)入他人已經(jīng)寫(xiě)好的函數(shù),一般在文件開(kāi)頭導(dǎo)入,有兩種方式:
①導(dǎo)入文件:import 文件名
調(diào)用方法:文件名.函數(shù)()
這種方法相當(dāng)于在文件首行導(dǎo)入了其他文件的全部代碼,執(zhí)行時(shí),被導(dǎo)入文件的代碼會(huì)順序執(zhí)行,跳過(guò)函數(shù)部分,當(dāng)調(diào)用函數(shù)時(shí),函數(shù)才會(huì)被使用,相當(dāng)于把兩個(gè)文件拼接在一起。
②導(dǎo)入文件中的函數(shù):
導(dǎo)入文件中指定函數(shù):from 文件名 impact 函數(shù)名
導(dǎo)入文件中全部函數(shù):from 文件名 impact *
調(diào)用方法:函數(shù)名()
給導(dǎo)入的函數(shù)/文件設(shè)置別名:from 文件名 impact 函數(shù)名 as 新的函數(shù)名
impact 文件名 as 新的模塊名
8、_ _name_ _屬性
這玩意用來(lái)獲得當(dāng)前文件的名稱(chēng),如果位于主文件會(huì)返回“_ _main_ _",如果位于次文件(導(dǎo)入的文件)會(huì)返回導(dǎo)入的文件名。此屬性一般用來(lái)測(cè)試當(dāng)前文件是不是主文件。
9、lambda匿名函數(shù)
用于定義簡(jiǎn)單的函數(shù),且可以作為形參。
使用形式:
函數(shù)名=lambda 參數(shù):函數(shù)內(nèi)代碼
到此這篇關(guān)于python中的組合數(shù)據(jù)類(lèi)型、函數(shù)詳解的文章就介紹到這了,更多相關(guān)python組合數(shù)據(jù)類(lèi)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python機(jī)器學(xué)習(xí)Logistic回歸原理推導(dǎo)
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)Logistic回歸原理推導(dǎo),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Python中生成一個(gè)指定長(zhǎng)度的隨機(jī)字符串實(shí)現(xiàn)示例
這篇文章主要介紹了Python中生成一個(gè)指定長(zhǎng)度的隨機(jī)字符串,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
python 保存float類(lèi)型的小數(shù)的位數(shù)方法
今天小編就為大家分享一篇python 保存float類(lèi)型的小數(shù)的位數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
python3 BeautifulSoup模塊使用字典的方法抓取a標(biāo)簽內(nèi)的數(shù)據(jù)示例
這篇文章主要介紹了python3 BeautifulSoup模塊使用字典的方法抓取a標(biāo)簽內(nèi)的數(shù)據(jù),結(jié)合實(shí)例形式Fenix了python3 BeautifulSoup模塊進(jìn)行數(shù)據(jù)的抓取相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
淺談PyQt5中異步刷新UI和Python多線(xiàn)程總結(jié)
今天小編就為大家分享一篇淺談PyQt5中異步刷新UI和Python多線(xiàn)程總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
用Pycharm實(shí)現(xiàn)鼠標(biāo)滾輪控制字體大小的方法
今天小編就為大家分享一篇用Pycharm實(shí)現(xiàn)鼠標(biāo)滾輪控制字體大小的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
python學(xué)習(xí)之subprocess模塊詳解
這篇文章主要介紹了python學(xué)習(xí)之subprocess模塊的相關(guān)資料,該模塊用于創(chuàng)建子進(jìn)程并與其進(jìn)行交互,它提供了多個(gè)函數(shù)和類(lèi)來(lái)執(zhí)行操作系統(tǒng)命令、獲取命令輸出以及管理子進(jìn)程的生命周期,需要的朋友可以參考下2024-12-12
Python中使用Minio實(shí)現(xiàn)圖像或視頻文件存儲(chǔ)的步驟
本文章向大家介紹了Minio這一款簡(jiǎn)易的云存儲(chǔ)服務(wù)器,并講述了如何在Python中去使用Minio,實(shí)現(xiàn)了視頻文件的上傳和獲取,感興趣的朋友一起看看吧2025-02-02

