版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python編程基礎(chǔ)歡迎來(lái)到Python編程基礎(chǔ)課程!本課程旨在為初學(xué)者提供全面的Python編程入門知識(shí),適合零基礎(chǔ)或編程經(jīng)驗(yàn)有限的學(xué)習(xí)者。我們將從最基本的概念開(kāi)始,循序漸進(jìn)地引導(dǎo)您掌握Python的核心語(yǔ)法和應(yīng)用技能。Python作為當(dāng)今最流行的編程語(yǔ)言之一,已廣泛應(yīng)用于網(wǎng)站開(kāi)發(fā)、數(shù)據(jù)分析、人工智能和自動(dòng)化等多個(gè)領(lǐng)域。掌握Python不僅可以提升您的技術(shù)能力,還能為您的職業(yè)發(fā)展打開(kāi)新的可能性。無(wú)論您是學(xué)生、職場(chǎng)新人還是尋求技能轉(zhuǎn)型的專業(yè)人士,本課程都將為您奠定堅(jiān)實(shí)的編程基礎(chǔ)。讓我們一起開(kāi)啟這段Python學(xué)習(xí)之旅,探索編程的無(wú)限可能!Python語(yǔ)言發(fā)展歷史1989年誕生由荷蘭程序員GuidovanRossum設(shè)計(jì)開(kāi)發(fā),作為圣誕節(jié)期間的業(yè)余項(xiàng)目Python2.0(2000年)引入了列表推導(dǎo)式、垃圾回收等功能,社區(qū)迅速發(fā)展Python3.0(2008年)重大更新,不完全向后兼容,修復(fù)了語(yǔ)言設(shè)計(jì)中的缺陷現(xiàn)今發(fā)展持續(xù)迭代更新,目前廣泛應(yīng)用于各技術(shù)領(lǐng)域,全球開(kāi)發(fā)者社區(qū)活躍Python語(yǔ)言由荷蘭程序員GuidovanRossum于1989年圣誕節(jié)期間創(chuàng)造,最初設(shè)計(jì)目標(biāo)是作為ABC語(yǔ)言的繼承者。Python名稱的靈感來(lái)源于Guido喜愛(ài)的英國(guó)喜劇組合"MontyPython",而非蟒蛇的英文。作為一種開(kāi)源編程語(yǔ)言,Python的發(fā)展得益于全球開(kāi)發(fā)者社區(qū)的貢獻(xiàn)。它支持多種操作系統(tǒng),包括Windows、MacOS和各種Linux/Unix系統(tǒng),這種跨平臺(tái)特性大大促進(jìn)了其普及。Python語(yǔ)言設(shè)計(jì)哲學(xué)強(qiáng)調(diào)代碼的可讀性和簡(jiǎn)潔性,其格言"優(yōu)雅勝于丑陋,明確勝于隱晦"反映了這一理念。為什么選擇Python?簡(jiǎn)潔易讀的語(yǔ)法Python使用清晰的縮進(jìn)結(jié)構(gòu)和簡(jiǎn)潔的語(yǔ)法,使代碼具有極高的可讀性,大大降低了學(xué)習(xí)曲線豐富的庫(kù)和框架提供數(shù)以萬(wàn)計(jì)的庫(kù)和框架,如NumPy、Pandas、Django等,可以快速實(shí)現(xiàn)各種功能而無(wú)需"重新發(fā)明輪子"活躍的社區(qū)支持擁有龐大而活躍的全球開(kāi)發(fā)者社區(qū),提供豐富的學(xué)習(xí)資源、文檔和問(wèn)題解答主流發(fā)展趨勢(shì)在數(shù)據(jù)科學(xué)、人工智能和Web開(kāi)發(fā)等熱門領(lǐng)域占據(jù)主導(dǎo)地位,職業(yè)發(fā)展前景廣闊Python作為初學(xué)者友好型語(yǔ)言,其學(xué)習(xí)曲線相對(duì)平緩。相比其他編程語(yǔ)言,Python代碼通常需要更少的行數(shù)來(lái)完成相同的任務(wù),這大大提高了開(kāi)發(fā)效率。例如,一個(gè)簡(jiǎn)單的文件讀取操作,在Java中可能需要5-10行代碼,而在Python中只需1-2行即可完成。此外,Python的通用性是其另一大優(yōu)勢(shì)。從Web開(kāi)發(fā)到數(shù)據(jù)分析,從科學(xué)計(jì)算到人工智能,Python幾乎可以應(yīng)用于任何編程領(lǐng)域。這種多功能性使學(xué)習(xí)Python成為一項(xiàng)高回報(bào)的投資,掌握這一技能可以為您打開(kāi)眾多職業(yè)發(fā)展的大門。Python的主要應(yīng)用領(lǐng)域Web開(kāi)發(fā)使用Django、Flask等框架構(gòu)建功能強(qiáng)大的網(wǎng)站和Web應(yīng)用數(shù)據(jù)分析利用Pandas、NumPy等庫(kù)處理、分析和可視化大量數(shù)據(jù)人工智能通過(guò)TensorFlow、PyTorch等框架開(kāi)發(fā)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)應(yīng)用自動(dòng)化編寫腳本自動(dòng)化日常任務(wù),提高工作效率科學(xué)計(jì)算在物理、生物學(xué)、天文學(xué)等領(lǐng)域進(jìn)行復(fù)雜的科學(xué)計(jì)算和模擬游戲開(kāi)發(fā)使用Pygame等庫(kù)創(chuàng)建2D游戲和教育應(yīng)用Python在各行各業(yè)的應(yīng)用日益廣泛。在金融領(lǐng)域,投資銀行和對(duì)沖基金使用Python進(jìn)行量化分析和交易算法開(kāi)發(fā);在醫(yī)療健康行業(yè),研究人員利用Python處理基因組數(shù)據(jù)和藥物發(fā)現(xiàn);在媒體行業(yè),內(nèi)容推薦系統(tǒng)和自動(dòng)化新聞生成也大量依賴Python技術(shù)。大型科技公司如Google、Facebook、Netflix和Dropbox都將Python作為其技術(shù)棧的關(guān)鍵組成部分。例如,YouTube的后端大部分是用Python編寫的,而Instagram則完全基于Django(Python的Web框架)構(gòu)建。這些成功案例不僅證明了Python的強(qiáng)大能力,也展示了其在處理大規(guī)模應(yīng)用時(shí)的可靠性。安裝Python開(kāi)發(fā)環(huán)境下載安裝包訪問(wèn)Python官網(wǎng)(),根據(jù)操作系統(tǒng)選擇對(duì)應(yīng)的安裝包選擇版本推薦安裝Python3.x最新穩(wěn)定版,避免使用已停止支持的2.x版本安裝配置Windows用戶請(qǐng)勾選"AddPythontoPATH"選項(xiàng);Mac和Linux用戶可通過(guò)終端安裝驗(yàn)證安裝打開(kāi)命令行或終端,輸入"python--version"或"python3--version"檢查安裝是否成功在安裝Python時(shí),Windows用戶應(yīng)特別注意勾選"AddPythontoPATH"選項(xiàng),這將使您能夠從命令行直接調(diào)用Python。如果忘記勾選,可以通過(guò)系統(tǒng)環(huán)境變量設(shè)置手動(dòng)添加Python到PATH中。對(duì)于初學(xué)者,建議安裝Python官方發(fā)行版,而非第三方發(fā)行版,以避免潛在的兼容性問(wèn)題。Python3.x與Python2.x之間存在一些不兼容的語(yǔ)法差異。盡管仍有一些遺留系統(tǒng)使用Python2,但所有新項(xiàng)目都應(yīng)使用Python3開(kāi)發(fā),因?yàn)镻ython2已于2020年1月1日正式停止支持。選擇3.x系列的最新穩(wěn)定版本(如3.9或3.10)可以確保您獲得最新的語(yǔ)言特性和安全更新。集成開(kāi)發(fā)環(huán)境(IDE)介紹IDLEPython自帶的簡(jiǎn)單IDE,適合初學(xué)者和簡(jiǎn)單腳本開(kāi)發(fā)。優(yōu)點(diǎn)是安裝Python時(shí)默認(rèn)包含,無(wú)需額外配置;缺點(diǎn)是功能相對(duì)簡(jiǎn)單,缺乏高級(jí)編輯和調(diào)試功能。PyCharmJetBrains公司開(kāi)發(fā)的專業(yè)PythonIDE,提供代碼補(bǔ)全、智能提示、調(diào)試工具等高級(jí)功能。優(yōu)點(diǎn)是功能全面,適合專業(yè)開(kāi)發(fā);缺點(diǎn)是專業(yè)版需付費(fèi),且資源占用較高。VisualStudioCode微軟開(kāi)發(fā)的輕量級(jí)代碼編輯器,通過(guò)安裝Python擴(kuò)展可支持Python開(kāi)發(fā)。優(yōu)點(diǎn)是免費(fèi)、輕量、擴(kuò)展性強(qiáng);缺點(diǎn)是需要一定配置才能獲得完整的Python開(kāi)發(fā)體驗(yàn)。選擇合適的IDE可以顯著提高編程效率。對(duì)于初學(xué)者,可以先使用IDLE熟悉Python基礎(chǔ)語(yǔ)法,隨后再過(guò)渡到功能更全面的IDE。PyCharm的社區(qū)版提供了大部分核心功能且完全免費(fèi),是進(jìn)階學(xué)習(xí)的不錯(cuò)選擇。VSCode憑借其優(yōu)秀的性能和豐富的擴(kuò)展生態(tài)系統(tǒng),近年來(lái)在Python開(kāi)發(fā)者中越來(lái)越受歡迎。此外,還有一些基于Web的Python開(kāi)發(fā)環(huán)境,如JupyterNotebook和GoogleColab,特別適合數(shù)據(jù)分析和機(jī)器學(xué)習(xí)任務(wù)。這些工具允許您將代碼、文檔和可視化結(jié)果在同一環(huán)境中展示,非常適合學(xué)習(xí)和實(shí)驗(yàn)性質(zhì)的項(xiàng)目。選擇IDE時(shí),應(yīng)考慮您的具體需求、計(jì)算機(jī)配置以及項(xiàng)目類型。第一個(gè)Python程序編寫代碼在編輯器中輸入:print("Hello,World!")保存文件將文件保存為hello.py運(yùn)行程序命令行中輸入:pythonhello.py查看結(jié)果屏幕將顯示:Hello,World!在編程世界中,"Hello,World!"程序是學(xué)習(xí)任何編程語(yǔ)言的傳統(tǒng)第一步。這個(gè)簡(jiǎn)單的程序展示了Python一個(gè)重要特性:其簡(jiǎn)潔性。相比其他語(yǔ)言,Python不需要導(dǎo)入特殊的庫(kù)或者編寫冗長(zhǎng)的代碼結(jié)構(gòu)就能完成基本的輸出功能。print()函數(shù)是Python中最常用的內(nèi)置函數(shù)之一,用于向屏幕輸出內(nèi)容。它可以打印多種數(shù)據(jù)類型,包括字符串、數(shù)字、變量甚至是復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。嘗試修改引號(hào)內(nèi)的文本,再次運(yùn)行程序,觀察輸出結(jié)果的變化。這種即時(shí)的反饋是學(xué)習(xí)編程的重要環(huán)節(jié),有助于理解代碼與結(jié)果之間的關(guān)系??梢酝ㄟ^(guò)添加多個(gè)參數(shù)(如print("Hello","World"))或使用轉(zhuǎn)義字符(如\n換行符)來(lái)進(jìn)一步探索print()函數(shù)的用法。編寫與運(yùn)行Python腳本創(chuàng)建腳本文件使用文本編輯器創(chuàng)建.py后綴的文件編寫Python代碼在文件中輸入Python語(yǔ)句和注釋命令行執(zhí)行打開(kāi)終端,使用pythonfilename.py命令運(yùn)行Python腳本本質(zhì)上是包含Python代碼的文本文件,通常以.py為擴(kuò)展名。與編譯型語(yǔ)言不同,Python腳本不需要先編譯成機(jī)器碼,而是由Python解釋器逐行執(zhí)行。這種特性使得開(kāi)發(fā)和測(cè)試過(guò)程更加靈活高效,特別適合快速原型開(kāi)發(fā)和腳本自動(dòng)化任務(wù)。在Python中添加注釋非常簡(jiǎn)單。單行注釋以#符號(hào)開(kāi)始,解釋器會(huì)忽略#后面的所有內(nèi)容;多行注釋可以使用三引號(hào)('''或""")包圍。良好的注釋習(xí)慣對(duì)于代碼的可讀性和維護(hù)至關(guān)重要,特別是在團(tuán)隊(duì)協(xié)作中。建議為關(guān)鍵算法、復(fù)雜邏輯或不常見(jiàn)的代碼技巧添加清晰的注釋,幫助他人(也包括未來(lái)的自己)理解代碼的目的和功能。Python基本語(yǔ)法特點(diǎn)特點(diǎn)描述示例縮進(jìn)結(jié)構(gòu)使用縮進(jìn)表示代碼塊,而非花括號(hào)ifx>0:print("正數(shù)")文件擴(kuò)展名Python腳本文件使用.py后綴script.py,main.py大小寫敏感變量名區(qū)分大小寫name與Name是不同變量語(yǔ)句結(jié)束通常不需要分號(hào)結(jié)束語(yǔ)句print("Hello")注釋方式使用#符號(hào)進(jìn)行單行注釋#這是一個(gè)注釋Python的縮進(jìn)結(jié)構(gòu)是其最顯著的語(yǔ)法特點(diǎn)之一。與使用花括號(hào){}來(lái)界定代碼塊的語(yǔ)言(如C++、Java)不同,Python使用縮進(jìn)來(lái)表示代碼的層次結(jié)構(gòu)。這種設(shè)計(jì)強(qiáng)制開(kāi)發(fā)者編寫格式一致、易于閱讀的代碼,但也要求嚴(yán)格遵守縮進(jìn)規(guī)則,否則會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。標(biāo)準(zhǔn)的Python代碼使用4個(gè)空格作為一個(gè)縮進(jìn)級(jí)別。Python的另一個(gè)特點(diǎn)是其表達(dá)式簡(jiǎn)潔明了。例如,交換兩個(gè)變量的值在其他語(yǔ)言中可能需要引入臨時(shí)變量,而在Python中只需一行代碼:a,b=b,a。這種簡(jiǎn)潔性減少了代碼量,提高了開(kāi)發(fā)效率,但也要求開(kāi)發(fā)者對(duì)Python特有的語(yǔ)法規(guī)則有深入理解。Python還支持鏈?zhǔn)奖容^,如a<b<c,這在許多其他編程語(yǔ)言中需要使用邏輯運(yùn)算符(a<b&&b<c)來(lái)實(shí)現(xiàn)。變量及其命名規(guī)則命名規(guī)則只能包含字母、數(shù)字和下劃線不能以數(shù)字開(kāi)頭不能使用Python關(guān)鍵字區(qū)分大小寫命名約定變量名使用小寫字母多個(gè)單詞用下劃線連接(snake_case)常量通常全部大寫類名使用駝峰命名法(CamelCase)動(dòng)態(tài)類型特性無(wú)需提前聲明變量類型類型可以在運(yùn)行時(shí)改變解釋器自動(dòng)推斷類型使用type()函數(shù)查看變量類型Python是一種動(dòng)態(tài)類型語(yǔ)言,這意味著您無(wú)需像在C++或Java等靜態(tài)類型語(yǔ)言中那樣提前聲明變量的類型。變量在賦值時(shí)自動(dòng)確定類型,且可以隨時(shí)改變類型。例如,可以將一個(gè)變量從整數(shù)更改為字符串:x=10,然后x="hello"。盡管這種靈活性提供了便利,但也可能導(dǎo)致難以發(fā)現(xiàn)的類型相關(guān)錯(cuò)誤。因此,養(yǎng)成良好的變量命名習(xí)慣尤為重要,變量名應(yīng)該清晰地表明其用途和預(yù)期內(nèi)容。在Python中,變量實(shí)際上是對(duì)值的引用,而非存儲(chǔ)值的容器。當(dāng)執(zhí)行賦值操作(如x=5)時(shí),Python創(chuàng)建一個(gè)整數(shù)對(duì)象5,并將變量x指向這個(gè)對(duì)象。這種引用機(jī)制解釋了為什么有些操作可能產(chǎn)生出人意料的結(jié)果,特別是在處理可變對(duì)象(如列表)時(shí)。理解這一點(diǎn)對(duì)于編寫高效且無(wú)錯(cuò)誤的Python代碼至關(guān)重要。推薦使用有意義的變量名,如student_count而非簡(jiǎn)單的sc,以增強(qiáng)代碼的可讀性和自文檔性。Python常見(jiàn)數(shù)據(jù)類型數(shù)字類型int(整數(shù)):5,-10,0float(浮點(diǎn)數(shù)):3.14,-0.001complex(復(fù)數(shù)):3+4j字符串(str)有序的字符集合可用單引號(hào)或雙引號(hào)不可變類型布爾類型(bool)值只有True或False用于條件判斷可與邏輯運(yùn)算符結(jié)合容器類型list(列表):[1,2,3]tuple(元組):(1,2,3)dict(字典):{'key':'value'}set(集合):{1,2,3}Python的數(shù)據(jù)類型可以大致分為可變類型和不可變類型。不可變類型包括數(shù)字、字符串和元組,一旦創(chuàng)建,其值就不能更改;可變類型包括列表、字典和集合,創(chuàng)建后可以修改其內(nèi)容。了解數(shù)據(jù)類型的可變性對(duì)于理解Python的值傳遞機(jī)制和避免意外的副作用至關(guān)重要。Python的類型轉(zhuǎn)換非常靈活,可以通過(guò)內(nèi)置函數(shù)如int()、float()、str()等將一種類型轉(zhuǎn)換為另一種類型。例如,int("42")將字符串"42"轉(zhuǎn)換為整數(shù)42。這種自動(dòng)類型轉(zhuǎn)換在處理用戶輸入、文件讀取等場(chǎng)景非常有用。但需注意,并非所有轉(zhuǎn)換都是可能的,如嘗試將非數(shù)字字符串轉(zhuǎn)換為整數(shù)(int("hello"))將引發(fā)ValueError。在編寫代碼時(shí),需要考慮到潛在的類型轉(zhuǎn)換錯(cuò)誤并適當(dāng)處理異常。數(shù)字類型及常用操作操作符描述示例結(jié)果+加法5+38-減法5-32*乘法5*315/除法(返回浮點(diǎn)數(shù))5/31.6666...//整除(返回整數(shù))5//31%取余5%32**冪運(yùn)算5**3125Python支持各種數(shù)字類型的復(fù)雜運(yùn)算,超出基本算術(shù)運(yùn)算符外,還可以使用math模塊進(jìn)行更高級(jí)的數(shù)學(xué)計(jì)算。例如,math.sin()、math.log()、math.sqrt()等函數(shù)可以處理三角函數(shù)、對(duì)數(shù)和平方根等運(yùn)算。對(duì)于科學(xué)計(jì)算,可以使用NumPy庫(kù),它提供了更全面和高效的數(shù)值計(jì)算功能,特別適合處理大型多維數(shù)組。在Python中,整數(shù)(int)沒(méi)有大小限制,可以處理任意精度的整數(shù),只受限于可用內(nèi)存。這與其他編程語(yǔ)言中的整數(shù)類型通常有固定大小限制不同。浮點(diǎn)數(shù)(float)則遵循IEEE754標(biāo)準(zhǔn),與大多數(shù)編程語(yǔ)言類似,存在精度限制。對(duì)于需要高精度的浮點(diǎn)計(jì)算,可以使用decimal模塊中的Decimal類型,它提供了可控制精度的十進(jìn)制浮點(diǎn)數(shù)。類型轉(zhuǎn)換函數(shù)如int()、float()、complex()可以在不同數(shù)字類型之間進(jìn)行轉(zhuǎn)換,但需注意可能的精度損失或轉(zhuǎn)換失敗。字符串基礎(chǔ)字符串定義單引號(hào):'Hello'雙引號(hào):"World"三引號(hào):'''多行文本'''三雙引號(hào):"""文檔字符串"""轉(zhuǎn)義字符\n:換行符\t:制表符\\:反斜杠\':單引號(hào)\":雙引號(hào)原始字符串前綴r表示原始字符串r"C:\Users\name"轉(zhuǎn)義字符不起作用適用于正則表達(dá)式和文件路徑在Python中,字符串是不可變的序列類型,這意味著一旦創(chuàng)建,字符串的內(nèi)容就不能更改。任何看似修改字符串的操作實(shí)際上都是創(chuàng)建了一個(gè)新的字符串對(duì)象。多行字符串可以使用三引號(hào)('''或""")定義,這在編寫長(zhǎng)文本、文檔字符串或包含多行的SQL查詢時(shí)特別有用。Python還支持使用r前綴創(chuàng)建原始字符串,其中反斜杠不被視為特殊字符,這在處理正則表達(dá)式和Windows文件路徑時(shí)非常方便。轉(zhuǎn)義字符使您能夠在字符串中包含特殊字符,例如換行符(\n)、制表符(\t)或引號(hào)本身(\'或\")。如果需要在字符串中包含大量特殊字符,可以使用原始字符串(如r"C:\path\to\file")而不是轉(zhuǎn)義每個(gè)特殊字符("C:\\path\\to\\file")。此外,Python3中的字符串默認(rèn)使用Unicode編碼,這意味著它可以輕松處理世界各種語(yǔ)言的字符,包括中文、日文或阿拉伯文等非拉丁字符。對(duì)于需要處理特定編碼的字節(jié)序列,可以使用bytes類型。字符串常用操作拼接"Hello"+""+"World"重復(fù)"Python"*3格式化f"名字:{name},年齡:{age}"切片"Python"[0:3]字符串操作是Python編程中最常見(jiàn)的任務(wù)之一。字符串拼接可以使用+運(yùn)算符,但對(duì)于多個(gè)字符串或在循環(huán)中構(gòu)建字符串,使用join()方法通常更高效,如"".join(["Hello","World"])。格式化字符串有多種方式:傳統(tǒng)的%運(yùn)算符(如"%s有%d個(gè)蘋果"%(name,count))、format()方法(如"{0}有{1}個(gè)蘋果".format(name,count))和Python3.6+引入的f-字符串(如f"{name}有{count}個(gè)蘋果")。f-字符串不僅語(yǔ)法簡(jiǎn)潔,而且允許直接在字符串中嵌入表達(dá)式,是推薦的格式化方式。字符串切片是Python的強(qiáng)大功能,允許通過(guò)[start:end:step]語(yǔ)法提取子字符串。例如,"Python"[1:4]返回"yth","Python"[::-1]返回完整字符串的反轉(zhuǎn)"nohtyP"。Python還提供了豐富的字符串方法,如upper()、lower()、strip()、split()、replace()等,用于各種字符串處理任務(wù)。了解這些常用方法可以大大簡(jiǎn)化文本處理工作。例如,可以使用split()方法將一個(gè)字符串按指定分隔符拆分為列表(如"a,b,c".split(",")返回["a","b","c"]),然后再用join()將列表元素重新組合為字符串。布爾類型及邏輯運(yùn)算符運(yùn)算符描述示例結(jié)果and邏輯與TrueandFalseFalseor邏輯或TrueorFalseTruenot邏輯非notTrueFalse==等于5==5True!=不等于5!=3True>大于5>3True<小于5<3False布爾類型是Python中最簡(jiǎn)單的數(shù)據(jù)類型,只有True和False兩個(gè)值。盡管簡(jiǎn)單,但布爾值在條件語(yǔ)句、循環(huán)控制和邏輯運(yùn)算中起著核心作用。Python中幾乎所有對(duì)象都可以被解釋為布爾值(稱為"真值測(cè)試")。一般規(guī)則是,數(shù)字0、空序列(如空字符串""、空列表[])、None和False被視為False,其他值被視為True。這種隱式轉(zhuǎn)換使得條件表達(dá)式更加簡(jiǎn)潔,例如可以直接使用ifmy_list:而不是iflen(my_list)>0:來(lái)檢查列表是否為空。Python的邏輯運(yùn)算符(and、or、not)遵循短路求值原則。這意味著如果第一個(gè)操作數(shù)足以確定結(jié)果,則不會(huì)計(jì)算第二個(gè)操作數(shù)。例如,在表達(dá)式xandy中,如果x為False,則整個(gè)表達(dá)式為False,無(wú)需計(jì)算y;在表達(dá)式xory中,如果x為True,則整個(gè)表達(dá)式為True,同樣不需要計(jì)算y。這種機(jī)制不僅提高了效率,還允許編寫巧妙的條件表達(dá)式,如result=xordefault_value(當(dāng)x為假值時(shí)使用默認(rèn)值)。值得注意的是,Python的邏輯運(yùn)算符返回的是實(shí)際的操作數(shù)值,而非布爾值,例如Trueand"hello"返回"hello",F(xiàn)alseor42返回42。列表的定義與訪問(wèn)列表定義使用方括號(hào)創(chuàng)建:[1,2,3]可以包含不同類型的元素使用list()函數(shù)轉(zhuǎn)換其他序列可以嵌套包含其他列表索引訪問(wèn)索引從0開(kāi)始:my_list[0]負(fù)索引從末尾計(jì)數(shù):my_list[-1]使用切片獲取子列表:my_list[1:4]索引越界會(huì)引發(fā)IndexError動(dòng)態(tài)操作添加元素:append(),insert()刪除元素:pop(),remove()連接列表:extend(),+運(yùn)算符復(fù)制列表:copy(),[:]列表是Python中最常用的數(shù)據(jù)結(jié)構(gòu)之一,它是有序、可變的集合,可以存儲(chǔ)任何類型的對(duì)象。列表的這種靈活性使其在許多編程任務(wù)中非常有用。與字符串不同,列表是可變的,這意味著可以在不創(chuàng)建新列表的情況下修改其內(nèi)容。例如,可以通過(guò)索引賦值改變特定位置的元素(my_list[1]="newvalue"),或使用切片賦值替換一段元素(my_list[1:3]=["a","b","c"])。Python列表支持多種訪問(wèn)和操作方式。使用len()函數(shù)可以獲取列表長(zhǎng)度;in運(yùn)算符可以檢查元素是否存在于列表中(如"apple"infruits_list);索引訪問(wèn)允許直接讀取或修改特定位置的元素。列表的動(dòng)態(tài)特性使其可以根據(jù)需要增長(zhǎng)或縮小。append()方法在列表末尾添加單個(gè)元素,extend()方法將另一個(gè)可迭代對(duì)象的所有元素添加到列表末尾,insert()方法在指定位置插入元素。刪除元素可以使用remove()(按值刪除第一個(gè)匹配項(xiàng))、pop()(按索引刪除并返回該元素)或del語(yǔ)句(刪除指定索引或切片的元素)。列表常用方法Python列表提供了豐富的內(nèi)置方法,使列表操作變得簡(jiǎn)單高效。append()方法是最常用的列表方法之一,用于在列表末尾添加元素。如果需要在特定位置插入元素,可以使用insert(index,element)方法。extend()方法將另一個(gè)可迭代對(duì)象的所有元素添加到列表末尾,這與使用+=運(yùn)算符類似,但更為高效。刪除元素時(shí),可以使用remove()方法移除第一個(gè)匹配的值,或使用pop()方法移除指定索引處的元素(默認(rèn)為最后一個(gè)元素)并返回該值。排序是列表處理中的常見(jiàn)需求。sort()方法可以對(duì)列表元素進(jìn)行原地排序,改變列表本身;而sorted()函數(shù)則返回一個(gè)新的已排序列表,保持原列表不變。這兩者都接受key參數(shù)來(lái)自定義排序標(biāo)準(zhǔn),以及reverse參數(shù)來(lái)指定是否逆序排序。例如,my_list.sort(key=len,reverse=True)將按元素長(zhǎng)度從大到小排序。reverse()方法用于反轉(zhuǎn)列表元素的順序。對(duì)于頻繁的成員檢查操作,考慮將列表轉(zhuǎn)換為集合(set),這可以顯著提高大型集合的查找性能,因?yàn)榧鲜腔诠1韺?shí)現(xiàn)的,提供O(1)的查找時(shí)間復(fù)雜度,而列表的查找為O(n)。元組基礎(chǔ)元組定義使用圓括號(hào)創(chuàng)建:(1,2,3)單元素元組需要逗號(hào):(1,)也可以省略括號(hào):1,2,3使用tuple()函數(shù)轉(zhuǎn)換其他序列不可變特性創(chuàng)建后不能修改、添加或刪除元素不可變性提供了數(shù)據(jù)安全性可以作為字典的鍵內(nèi)部可變對(duì)象(如列表)的內(nèi)容仍可修改常見(jiàn)用途返回多個(gè)值的函數(shù)結(jié)果不應(yīng)被修改的數(shù)據(jù)集合作為字典鍵或集合元素比列表更高效(內(nèi)存和性能)元組是Python中的不可變序列類型,一旦創(chuàng)建,其元素就不能被修改。這種不可變性使元組在某些情況下比列表更安全、更高效。創(chuàng)建元組的方式比較靈活,可以使用圓括號(hào),也可以簡(jiǎn)單地使用逗號(hào)分隔值。需要注意的是,創(chuàng)建單元素元組時(shí)必須使用逗號(hào),如(1,),否則Python會(huì)將其解釋為普通的數(shù)學(xué)括號(hào)表達(dá)式。元組支持與列表相同的索引和切片操作,但不支持修改元素的方法。元組的不可變性帶來(lái)了幾個(gè)重要優(yōu)勢(shì)。首先,元組可以用作字典的鍵或集合的元素,而列表由于是可變的,不能用于這些場(chǎng)景。其次,相比列表,元組通常有更小的內(nèi)存占用和更快的訪問(wèn)速度。此外,元組的不可變性使其成為多線程環(huán)境中安全共享數(shù)據(jù)的理想選擇,無(wú)需擔(dān)心數(shù)據(jù)被意外修改。元組解包是Python中常用的技術(shù),允許一次性將元組中的元素分配給多個(gè)變量,如x,y,z=(1,2,3)。這在函數(shù)返回多個(gè)值時(shí)特別有用,如Python中的divmod()函數(shù)返回商和余數(shù)的元組。字典(dict)基本用法創(chuàng)建字典使用花括號(hào)和鍵值對(duì):{'name':'張三','age':30}使用dict()函數(shù):dict(name='張三',age=30)通過(guò)列表創(chuàng)建:dict([('name','張三'),('age',30)])訪問(wèn)與修改通過(guò)鍵訪問(wèn)值:my_dict['name']使用get()方法:my_dict.get('name','默認(rèn)值')添加或修改:my_dict['email']='zhangsan@'刪除:delmy_dict['age']或my_dict.pop('age')字典遍歷遍歷所有鍵:forkeyinmy_dict:遍歷所有值:forvalueinmy_dict.values():遍歷鍵值對(duì):forkey,valueinmy_dict.items():檢查鍵是否存在:if'name'inmy_dict:字典是Python中的可變映射類型,以鍵值對(duì)形式存儲(chǔ)數(shù)據(jù),提供高效的基于鍵的查找。與列表使用整數(shù)索引不同,字典可以使用幾乎任何不可變類型作為鍵,包括字符串、數(shù)字和元組(含不可變?cè)兀?。字典的鍵必須是唯一的,重復(fù)的鍵會(huì)導(dǎo)致后面的值覆蓋前面的值。字典是無(wú)序的集合,盡管從Python3.7開(kāi)始,字典會(huì)保留插入順序,但不應(yīng)依賴這一行為。字典支持多種操作方法。keys()、values()和items()方法分別返回包含字典鍵、值和鍵值對(duì)的可迭代對(duì)象。get()方法可以安全地訪問(wèn)字典中的鍵,如果鍵不存在,則返回指定的默認(rèn)值,而不是引發(fā)KeyError。update()方法可以合并兩個(gè)字典或使用可迭代的鍵值對(duì)更新字典。字典推導(dǎo)式提供了一種簡(jiǎn)潔的方式創(chuàng)建字典,如{x:x**2forxinrange(5)}。嵌套字典(字典的值是另一個(gè)字典)在處理層次結(jié)構(gòu)數(shù)據(jù)時(shí)非常有用,如配置文件或JSON數(shù)據(jù)。合理使用字典可以大大提高數(shù)據(jù)處理效率,特別是在需要頻繁查找、插入和刪除操作的場(chǎng)景。集合(set)概述無(wú)序唯一元素集合集合中的元素不會(huì)重復(fù),自動(dòng)去除重復(fù)項(xiàng)創(chuàng)建集合使用花括號(hào):{1,2,3}或set()函數(shù):set([1,2,3])集合操作添加元素:add(),刪除元素:remove(),丟棄元素:discard()集合運(yùn)算并集:|或union(),交集:&或intersection(),差集:-或difference()集合是Python中的一種無(wú)序、可變的數(shù)據(jù)類型,其中的每個(gè)元素都是唯一的。這種唯一性使集合非常適合用于去除重復(fù)項(xiàng)(如list(set(my_list))可以快速去除列表中的重復(fù)元素)和成員檢查(如elementinmy_set比elementinmy_list更高效)。創(chuàng)建集合可以使用花括號(hào)或set()函數(shù),但要注意空的花括號(hào){}創(chuàng)建的是空字典,而不是空集合,應(yīng)使用set()來(lái)創(chuàng)建空集合。集合支持強(qiáng)大的數(shù)學(xué)集合運(yùn)算,包括并集(|)、交集(&)、差集(-)和對(duì)稱差集(^)。這些運(yùn)算符分別對(duì)應(yīng)于方法union()、intersection()、difference()和symmetric_difference()。集合也支持比較運(yùn)算,如子集檢查(<=)、真子集檢查(<)、超集檢查(>=)和真超集檢查(>)。集合的可變性允許添加(add)、刪除(remove/discard)和更新(update)操作。frozenset類型是集合的不可變變體,可以作為字典的鍵或其他集合的元素。集合的高效成員檢查使其在需要頻繁測(cè)試元素是否屬于某個(gè)集合的場(chǎng)景中非常有用,如過(guò)濾、去重和交集檢查。用戶輸入與輸出用戶輸入使用input()函數(shù)從用戶獲取輸入name=input("請(qǐng)輸入您的姓名:")input()總是返回字符串,需要時(shí)進(jìn)行類型轉(zhuǎn)換age=int(input("請(qǐng)輸入您的年齡:"))可以使用異常處理確保輸入有效try:num=float(input("輸入數(shù)字:"))exceptValueError:print("輸入無(wú)效")格式化輸出使用f-字符串(Python3.6+)name="張三"age=30print(f"{name}今年{age}歲")使用format()方法print("{0}今年{1}歲".format(name,age))使用%運(yùn)算符(舊式風(fēng)格)print("%s今年%d歲"%(name,age))控制數(shù)字格式print(f"Pi值:{3.14159:.2f}")用戶交互是許多程序的基本要求,Python提供了簡(jiǎn)單的機(jī)制來(lái)處理輸入和輸出。input()函數(shù)是獲取用戶輸入的主要方式,它會(huì)暫停程序執(zhí)行,等待用戶輸入內(nèi)容并按下回車鍵。該函數(shù)接受一個(gè)可選的字符串參數(shù)作為提示。需要注意的是,無(wú)論用戶輸入什么內(nèi)容,input()都將其作為字符串返回,因此如果需要其他類型的數(shù)據(jù)(如整數(shù)或浮點(diǎn)數(shù)),必須進(jìn)行顯式轉(zhuǎn)換。例如,要獲取用戶輸入的年齡,應(yīng)使用age=int(input("請(qǐng)輸入您的年齡:"))。輸出格式化在展示數(shù)據(jù)時(shí)非常重要,Python提供了多種格式化字符串的方法。最現(xiàn)代和推薦的方式是使用f-字符串(格式化字符串字面量),它允許直接在字符串中嵌入變量和表達(dá)式。例如,f"姓名:{name},年齡:{age}"。格式化說(shuō)明符可用于控制數(shù)字的顯示方式,如f"{number:.2f}"顯示保留兩位小數(shù)的浮點(diǎn)數(shù),f"{number:,}"添加千位分隔符。對(duì)于需要在運(yùn)行時(shí)構(gòu)建格式字符串的情況,可以使用str.format()方法。在處理大量數(shù)據(jù)輸出時(shí),可以使用join()方法高效地將字符串列表連接成單個(gè)字符串,如'\n'.join(lines)將列表中的每一行用換行符連接。算術(shù)與賦值運(yùn)算符類別運(yùn)算符描述示例算術(shù)運(yùn)算符+加法a+b-減法a-b*乘法a*b/除法(返回浮點(diǎn)數(shù))a/b%取余a%b**冪運(yùn)算a**b賦值運(yùn)算符=基本賦值a=5+=加法賦值a+=2#等價(jià)于a=a+2-=減法賦值a-=2#等價(jià)于a=a-2*=乘法賦值a*=2#等價(jià)于a=a*2/=除法賦值a/=2#等價(jià)于a=a/2Python的算術(shù)運(yùn)算符支持各種數(shù)值計(jì)算。除了基本的加減乘除外,Python還提供了幾個(gè)特殊的算術(shù)運(yùn)算符。整除運(yùn)算符(//)返回商的整數(shù)部分,例如7//2結(jié)果為3。冪運(yùn)算符(**)用于計(jì)算乘方,如2**3等于8,這比使用math.pow()函數(shù)更簡(jiǎn)潔。算術(shù)運(yùn)算符也可以用于非數(shù)值類型,例如字符串可以使用+進(jìn)行拼接,列表也可以用+連接或用*重復(fù)。在處理不同類型的數(shù)據(jù)時(shí),Python會(huì)嘗試執(zhí)行隱式類型轉(zhuǎn)換,如整數(shù)和浮點(diǎn)數(shù)混合運(yùn)算時(shí),結(jié)果通常是浮點(diǎn)數(shù)。賦值運(yùn)算符用于將值賦給變量,并可以與算術(shù)運(yùn)算符組合使用,形成復(fù)合賦值運(yùn)算符,如+=,-=,*=,/=等。這些復(fù)合運(yùn)算符不僅使代碼更簡(jiǎn)潔,而且通常更高效,因?yàn)樗鼈兛梢栽匦薷目勺儗?duì)象,如列表。例如,my_list+=[4,5]比my_list=my_list+[4,5]更高效,因?yàn)榍罢哒{(diào)用了列表的extend()方法,避免了創(chuàng)建新列表。在Python中,可以同時(shí)為多個(gè)變量賦值,如a,b=1,2,也可以使用這種方式交換變量值,如a,b=b,a。這種多重賦值的特性在處理函數(shù)返回多個(gè)值、解構(gòu)元組和列表時(shí)特別有用。比較與邏輯運(yùn)算符比較運(yùn)算符等于:==不等于:!=大于:>小于:<大于等于:>=小于等于:<=身份判斷:is,isnot成員判斷:in,notin邏輯運(yùn)算符邏輯與:and邏輯或:or邏輯非:not短路求值在表達(dá)式xandy中,如果x為False,則不計(jì)算y在表達(dá)式xory中,如果x為True,則不計(jì)算y實(shí)際應(yīng)用條件判斷:ifa>bandc<d:數(shù)值范圍檢查:if0<=x<=100:默認(rèn)值設(shè)置:result=user_inputordefault_value安全訪問(wèn):value=obj.get_value()ifobjisnotNoneelseNone比較運(yùn)算符用于比較兩個(gè)值并返回布爾結(jié)果(True或False)。在Python中,比較運(yùn)算符可以鏈?zhǔn)绞褂茫鏰<b<c,這相當(dāng)于a<bandb<c,但b只計(jì)算一次。關(guān)于比較運(yùn)算符,需要注意等于運(yùn)算符(==)檢查值是否相等,而身份運(yùn)算符(is)檢查兩個(gè)對(duì)象是否為同一個(gè)對(duì)象(內(nèi)存地址相同)。例如,[1,2,3]==[1,2,3]為True,但[1,2,3]is[1,2,3]為False,因?yàn)樗鼈兪莾蓚€(gè)不同的列表對(duì)象,盡管值相同。is運(yùn)算符通常用于與None比較,如ifobjisNone:。邏輯運(yùn)算符用于組合多個(gè)條件表達(dá)式。Python的邏輯運(yùn)算符是短路求值的,這意味著如果表達(dá)式的結(jié)果已經(jīng)確定,后續(xù)部分不會(huì)被計(jì)算。這種特性允許編寫高效的條件語(yǔ)句,并避免潛在的錯(cuò)誤。例如,在表達(dá)式ifx!=0andy/x>2:中,如果x為0,y/x部分不會(huì)被計(jì)算,從而避免了除零錯(cuò)誤。邏輯運(yùn)算符也常用于設(shè)置默認(rèn)值,如name=user_inputor"Guest",如果user_input為空或False,則使用"Guest"作為默認(rèn)值。在復(fù)雜條件判斷中,可以使用括號(hào)明確表達(dá)式的計(jì)算順序,提高代碼的可讀性,如if(a>bandc>d)ore==f:。條件語(yǔ)句if-else基本if語(yǔ)句if條件:執(zhí)行代碼塊if-else語(yǔ)句if條件:執(zhí)行代碼塊1else:執(zhí)行代碼塊2嵌套if語(yǔ)句if條件1:if條件2:執(zhí)行代碼塊else:執(zhí)行另一代碼塊條件語(yǔ)句是控制程序流程的基本結(jié)構(gòu),允許程序根據(jù)條件執(zhí)行不同的代碼塊。if語(yǔ)句用于在滿足特定條件時(shí)執(zhí)行代碼塊,而if-else語(yǔ)句允許在條件為真時(shí)執(zhí)行一個(gè)代碼塊,條件為假時(shí)執(zhí)行另一個(gè)代碼塊。Python的條件語(yǔ)句使用冒號(hào)(:)和縮進(jìn)來(lái)定義代碼塊的范圍,這種基于縮進(jìn)的語(yǔ)法使代碼結(jié)構(gòu)更加清晰可讀。條件表達(dá)式可以是任何可以評(píng)估為布爾值的表達(dá)式,包括比較、邏輯組合和函數(shù)調(diào)用等。在實(shí)際編程中,條件語(yǔ)句通常用于處理分支邏輯,如驗(yàn)證用戶輸入、根據(jù)數(shù)據(jù)特征執(zhí)行不同操作或?qū)崿F(xiàn)業(yè)務(wù)規(guī)則。嵌套if語(yǔ)句允許處理更復(fù)雜的條件邏輯,但過(guò)度嵌套可能導(dǎo)致代碼難以閱讀和維護(hù),被稱為"箭頭形代碼"或"圣誕樹(shù)代碼"。Python還提供了條件表達(dá)式(三元操作符),形式為value_if_trueifconditionelsevalue_if_false,這是編寫簡(jiǎn)單條件賦值的簡(jiǎn)潔方式。例如,max_value=aifa>belseb這一行替代了多行的if-else語(yǔ)句。在條件較多或邏輯較復(fù)雜時(shí),考慮使用字典映射或策略模式等設(shè)計(jì)模式來(lái)降低復(fù)雜性,提高代碼的可維護(hù)性。if-elif-else分支結(jié)構(gòu)首先檢查第一個(gè)條件if條件1:執(zhí)行代碼塊1如果第一個(gè)條件不滿足,檢查下一個(gè)elif條件2:執(zhí)行代碼塊2可以有多個(gè)elif條件elif條件3:執(zhí)行代碼塊3如果所有條件都不滿足,執(zhí)行else代碼else:執(zhí)行默認(rèn)代碼塊if-elif-else結(jié)構(gòu)是處理多條件分支的強(qiáng)大工具,允許程序在多個(gè)條件中選擇一個(gè)執(zhí)行路徑。與多個(gè)獨(dú)立的if語(yǔ)句不同,if-elif-else結(jié)構(gòu)一旦找到滿足的條件就會(huì)執(zhí)行相應(yīng)的代碼塊并跳過(guò)剩余的檢查,提高了執(zhí)行效率。這種結(jié)構(gòu)特別適合處理互斥條件,如成績(jī)?cè)u(píng)級(jí)、價(jià)格區(qū)間判斷或狀態(tài)轉(zhuǎn)換等場(chǎng)景。elif是"elseif"的縮寫,表示"否則,如果"的邏輯,可以有任意數(shù)量的elif分支。在使用if-elif-else結(jié)構(gòu)時(shí),條件的順序非常重要。Python解釋器按順序檢查條件,一旦找到第一個(gè)為True的條件,就會(huì)執(zhí)行其對(duì)應(yīng)的代碼塊并跳過(guò)后續(xù)條件。因此,更具體或更可能滿足的條件應(yīng)該放在前面,更一般或默認(rèn)的條件放在后面。注意縮進(jìn)的一致性對(duì)于確保代碼的正確執(zhí)行至關(guān)重要,Python標(biāo)準(zhǔn)建議使用4個(gè)空格作為一個(gè)縮進(jìn)級(jí)別。雖然if-elif-else結(jié)構(gòu)可以處理復(fù)雜的條件邏輯,但如果分支過(guò)多或邏輯過(guò)于復(fù)雜,考慮使用字典映射、查找表或面向?qū)ο蟮姆椒ㄖ貥?gòu)代碼,以提高可讀性和可維護(hù)性。while循環(huán)條件檢查評(píng)估循環(huán)條件,如果為True則進(jìn)入循環(huán)體執(zhí)行循環(huán)體執(zhí)行縮進(jìn)的代碼塊更新條件更新循環(huán)控制變量或狀態(tài)重新檢查條件返回第一步,重新評(píng)估條件while循環(huán)是Python中兩種主要循環(huán)結(jié)構(gòu)之一,用于在條件滿足時(shí)重復(fù)執(zhí)行代碼塊?;菊Z(yǔ)法為whilecondition:,其中condition是一個(gè)表達(dá)式,每次循環(huán)前都會(huì)進(jìn)行求值。如果表達(dá)式結(jié)果為True,則執(zhí)行循環(huán)體;如果為False,則退出循環(huán)繼續(xù)執(zhí)行后續(xù)代碼。while循環(huán)特別適合處理未知迭代次數(shù)的情況,如等待用戶輸入、處理數(shù)據(jù)流或執(zhí)行到滿足特定條件為止的操作。在使用while循環(huán)時(shí),確保循環(huán)條件最終會(huì)變?yōu)镕alse非常重要,否則會(huì)導(dǎo)致無(wú)限循環(huán)。通常,循環(huán)體內(nèi)應(yīng)該包含更新循環(huán)控制變量或狀態(tài)的代碼。例如,計(jì)數(shù)器循環(huán)應(yīng)該在循環(huán)體內(nèi)遞增或遞減計(jì)數(shù)器;處理集合時(shí),應(yīng)該在每次迭代后移除或修改元素。Python提供了break和continue語(yǔ)句來(lái)控制循環(huán)流程:break語(yǔ)句立即退出整個(gè)循環(huán),而continue語(yǔ)句跳過(guò)當(dāng)前迭代的剩余部分,直接進(jìn)入下一次迭代。這些控制語(yǔ)句對(duì)處理特殊情況或優(yōu)化循環(huán)非常有用。while循環(huán)還可以有一個(gè)可選的else子句,在循環(huán)條件變?yōu)镕alse時(shí)執(zhí)行,但如果循環(huán)通過(guò)break語(yǔ)句終止,則不會(huì)執(zhí)行else子句。for循環(huán)與range()基本for循環(huán)for變量in可迭代對(duì)象:執(zhí)行代碼塊遍歷序列中的每個(gè)元素,如字符串、列表、元組等range()函數(shù)range(stop):0到stop-1的整數(shù)range(start,stop):start到stop-1的整數(shù)range(start,stop,step):指定步長(zhǎng)的整數(shù)序列序列遍歷技巧enumerate():同時(shí)獲取索引和值z(mì)ip():并行遍歷多個(gè)序列items():遍歷字典的鍵值對(duì)for循環(huán)是Python中最常用的迭代結(jié)構(gòu),用于遍歷任何可迭代對(duì)象中的元素。與其他語(yǔ)言中基于計(jì)數(shù)器的for循環(huán)不同,Python的for循環(huán)更接近于"foreach"循環(huán),直接操作序列中的元素而非索引。這種設(shè)計(jì)使代碼更加簡(jiǎn)潔和易讀,減少了索引錯(cuò)誤的可能性。for循環(huán)可以遍歷各種Python對(duì)象,包括字符串、列表、元組、字典、集合,以及任何實(shí)現(xiàn)了迭代器協(xié)議的自定義對(duì)象。range()函數(shù)是for循環(huán)的常見(jiàn)伙伴,它生成一個(gè)整數(shù)序列,常用于執(zhí)行特定次數(shù)的操作。range()是惰性的,意味著它不會(huì)立即生成所有值,而是在迭代過(guò)程中按需生成,這使得range()非常內(nèi)存高效,即使生成大范圍的數(shù)值。當(dāng)遍歷需要同時(shí)訪問(wèn)元素及其位置時(shí),可以使用enumerate()函數(shù),它返回包含索引和元素的元組;當(dāng)需要并行遍歷多個(gè)序列時(shí),zip()函數(shù)能夠?qū)⒍鄠€(gè)可迭代對(duì)象打包成一個(gè)個(gè)對(duì)應(yīng)的元素元組。這些工具結(jié)合for循環(huán),使Python能夠以簡(jiǎn)潔、高效的方式處理各種迭代需求。如fori,(key,value)inenumerate(dict.items()):能夠同時(shí)獲取字典項(xiàng)的索引、鍵和值,展示了Python強(qiáng)大的迭代工具組合能力。循環(huán)控制語(yǔ)句break語(yǔ)句立即終止當(dāng)前循環(huán),跳到循環(huán)體之后的代碼。foriinrange(10):ifi==5:break#循環(huán)到5時(shí)終止print(i)#輸出:01234常用于找到特定條件后提前結(jié)束搜索或處理。continue語(yǔ)句跳過(guò)當(dāng)前迭代的剩余部分,進(jìn)入下一次迭代。foriinrange(10):ifi%2==0:continue#跳過(guò)偶數(shù)print(i)#輸出:13579用于在特定條件下跳過(guò)某些元素的處理。else子句當(dāng)循環(huán)正常完成(不是通過(guò)break終止)時(shí)執(zhí)行。foriinrange(5):print(i)else:print("循環(huán)正常完成")
#break時(shí)else不執(zhí)行:foriinrange(5):ifi==3:breakprint(i)else:print("這不會(huì)執(zhí)行")常用于確認(rèn)循環(huán)是否完整執(zhí)行。循環(huán)控制語(yǔ)句讓程序員能夠更靈活地控制循環(huán)的執(zhí)行流程。break語(yǔ)句通常用于在滿足特定條件時(shí)提前結(jié)束循環(huán),避免不必要的迭代,提高程序效率。例如,在搜索操作中,一旦找到目標(biāo)元素,可以立即使用break退出循環(huán)。continue語(yǔ)句允許跳過(guò)當(dāng)前迭代中的特定情況,而不影響整個(gè)循環(huán)的執(zhí)行。它常用于過(guò)濾或跳過(guò)不滿足處理?xiàng)l件的元素,如處理列表中的非空值或有效記錄。Python循環(huán)的else子句是一個(gè)獨(dú)特而強(qiáng)大的特性,在其他很多編程語(yǔ)言中都不存在。它只在循環(huán)條件變?yōu)镕alse導(dǎo)致循環(huán)正常結(jié)束時(shí)執(zhí)行,如果循環(huán)通過(guò)break語(yǔ)句終止,則不會(huì)執(zhí)行else代碼塊。這個(gè)特性特別適合用于搜索場(chǎng)景,當(dāng)在循環(huán)中未找到目標(biāo)項(xiàng)時(shí),可以在else子句中處理"未找到"的情況,而不需要額外的標(biāo)志變量。循環(huán)控制語(yǔ)句可以嵌套使用,例如在嵌套循環(huán)中,break只會(huì)退出當(dāng)前所在的循環(huán)層級(jí),而不會(huì)影響外層循環(huán)。如果需要一次性退出多層循環(huán),可以使用函數(shù)返回、異常機(jī)制或設(shè)置控制標(biāo)志變量來(lái)實(shí)現(xiàn)。定義和調(diào)用函數(shù)函數(shù)定義使用def關(guān)鍵字定義函數(shù),指定函數(shù)名和參數(shù)defgreet(name):returnf"你好,{name}!"文檔字符串添加描述函數(shù)功能的文檔字符串(docstring)defadd(a,b):"""返回兩個(gè)數(shù)的和"""returna+b函數(shù)調(diào)用通過(guò)函數(shù)名和參數(shù)調(diào)用函數(shù)result=add(5,3)print(result)#輸出:8返回值使用return語(yǔ)句返回函數(shù)結(jié)果,可返回多個(gè)值defget_dimensions():return10,20#返回元組(10,20)函數(shù)是Python程序的基本構(gòu)建塊,它將代碼組織成可重用的邏輯單元。通過(guò)使用函數(shù),程序員可以將復(fù)雜任務(wù)分解為更小、更易管理的部分,提高代碼的模塊化和可維護(hù)性。函數(shù)定義使用def關(guān)鍵字,后跟函數(shù)名、括號(hào)內(nèi)的參數(shù)列表和冒號(hào),然后是縮進(jìn)的函數(shù)體。函數(shù)名應(yīng)遵循與變量相同的命名規(guī)則,通常使用小寫字母和下劃線(snake_case)。文檔字符串(docstring)是在函數(shù)定義后立即跟隨的三引號(hào)字符串,用于描述函數(shù)的功能、參數(shù)和返回值,是良好的編程習(xí)慣。函數(shù)可以接受零個(gè)或多個(gè)參數(shù),并且可能返回一個(gè)結(jié)果(使用return語(yǔ)句)或不返回任何內(nèi)容(隱式返回None)。如果函數(shù)需要返回多個(gè)值,可以返回一個(gè)元組,調(diào)用者可以使用元組解包接收這些值。例如,width,height=get_dimensions()。沒(méi)有包含return語(yǔ)句的函數(shù)或執(zhí)行到?jīng)]有return值的return語(yǔ)句的函數(shù)將返回None。函數(shù)是Python中的一等公民,這意味著它們可以賦給變量、作為參數(shù)傳遞給其他函數(shù)、作為函數(shù)的返回值,甚至存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)如列表或字典中。這種靈活性為函數(shù)式編程風(fēng)格提供了基礎(chǔ),允許創(chuàng)建高階函數(shù)(接受或返回其他函數(shù)的函數(shù))和裝飾器(修改其他函數(shù)行為的函數(shù))。函數(shù)參數(shù)類型位置參數(shù)關(guān)鍵字參數(shù)默認(rèn)參數(shù)可變位置參數(shù)可變關(guān)鍵字參數(shù)Python函數(shù)支持多種參數(shù)類型,提供了極大的靈活性。位置參數(shù)是最基本的參數(shù)類型,按照定義的順序傳遞參數(shù)值。關(guān)鍵字參數(shù)通過(guò)參數(shù)名顯式指定,使調(diào)用更清晰且不依賴參數(shù)順序。默認(rèn)參數(shù)在函數(shù)定義時(shí)指定默認(rèn)值,如果調(diào)用時(shí)未提供該參數(shù),則使用默認(rèn)值。值得注意的是,默認(rèn)值只在函數(shù)定義時(shí)計(jì)算一次,如果默認(rèn)值是可變對(duì)象(如列表或字典),多次調(diào)用函數(shù)時(shí)可能會(huì)共享并修改同一個(gè)對(duì)象,導(dǎo)致意外結(jié)果。為避免這個(gè)問(wèn)題,應(yīng)使用None作為默認(rèn)值,然后在函數(shù)體內(nèi)創(chuàng)建新的可變對(duì)象??勺兾恢脜?shù)使用*args語(yǔ)法定義,允許函數(shù)接受任意數(shù)量的位置參數(shù),這些參數(shù)在函數(shù)內(nèi)部表示為元組??勺冴P(guān)鍵字參數(shù)使用**kwargs語(yǔ)法定義,允許函數(shù)接受任意數(shù)量的關(guān)鍵字參數(shù),這些參數(shù)在函數(shù)內(nèi)部表示為字典。這兩種可變參數(shù)類型特別適用于需要處理未知數(shù)量參數(shù)的函數(shù),如包裝器函數(shù)或需要轉(zhuǎn)發(fā)參數(shù)的中間函數(shù)。在定義函數(shù)參數(shù)時(shí),必須遵循以下順序:先是位置參數(shù),然后是默認(rèn)參數(shù),接著是可變位置參數(shù)(*args),然后是可變關(guān)鍵字參數(shù)(**kwargs)。此外,從Python3開(kāi)始,可以使用/和*符號(hào)強(qiáng)制規(guī)定哪些參數(shù)必須通過(guò)位置傳遞,哪些必須通過(guò)關(guān)鍵字傳遞,提供了更精細(xì)的參數(shù)傳遞控制。局部變量與全局變量模塊級(jí)作用域整個(gè)文件中可訪問(wèn)的變量函數(shù)作用域函數(shù)內(nèi)部定義的局部變量塊級(jí)作用域Python中if/for內(nèi)的變量不是單獨(dú)作用域變量的作用域是指變量在程序中可被訪問(wèn)的區(qū)域。Python中主要有兩種作用域:局部作用域和全局作用域。局部變量是在函數(shù)內(nèi)部定義的變量,只能在定義它的函數(shù)內(nèi)部訪問(wèn),函數(shù)執(zhí)行完畢后這些變量將被銷毀。全局變量是在函數(shù)外部定義的變量,可以在整個(gè)模塊中訪問(wèn),包括函數(shù)內(nèi)部。當(dāng)局部變量和全局變量同名時(shí),函數(shù)內(nèi)部會(huì)優(yōu)先使用局部變量,這被稱為變量遮蔽(shadowing)。Python遵循LEGB規(guī)則查找變量名:首先在局部作用域(Local)查找,然后是閉包函數(shù)作用域(Enclosing),接著是全局作用域(Global),最后是內(nèi)置作用域(Built-in)。如果需要在函數(shù)內(nèi)部修改全局變量,必須使用global關(guān)鍵字聲明該變量為全局變量。例如,globalcounter將告訴Python函數(shù)內(nèi)的counter變量引用的是全局變量而非局部變量。類似地,nonlocal關(guān)鍵字用于在嵌套函數(shù)中修改外部函數(shù)的變量。過(guò)度使用全局變量通常被視為不良編程實(shí)踐,因?yàn)樗鼈儠?huì)使代碼難以理解和維護(hù),增加函數(shù)之間的隱式依賴,并可能導(dǎo)致難以跟蹤的錯(cuò)誤。相反,應(yīng)該傾向于通過(guò)參數(shù)傳遞和返回值來(lái)管理數(shù)據(jù)流,或者使用類來(lái)封裝相關(guān)的狀態(tài)和行為。對(duì)于真正需要在多個(gè)函數(shù)之間共享的狀態(tài),考慮使用類屬性、配置對(duì)象或依賴注入等更結(jié)構(gòu)化的方法。常見(jiàn)內(nèi)建函數(shù)函數(shù)名描述示例len()返回對(duì)象的長(zhǎng)度或元素個(gè)數(shù)len("Python")#返回6max(),min()返回最大值或最小值max([1,5,3])#返回5sum()對(duì)可迭代對(duì)象的元素求和sum([1,2,3])#返回6sorted()返回排序后的新列表sorted([3,1,2])#返回[1,2,3]type()返回對(duì)象的類型type(123)#返回<class'int'>enumerate()返回帶索引的可迭代對(duì)象list(enumerate(['a','b']))#[(0,'a'),(1,'b')]zip()聚合多個(gè)迭代器的元素list(zip([1,2],['a','b']))#[(1,'a'),(2,'b')]Python內(nèi)建函數(shù)是Python解釋器提供的一組預(yù)定義函數(shù),可以直接使用而無(wú)需導(dǎo)入。這些函數(shù)涵蓋了從基本類型轉(zhuǎn)換到容器操作的廣泛功能,大大簡(jiǎn)化了常見(jiàn)編程任務(wù)。len()函數(shù)可用于獲取字符串、列表、元組、字典等對(duì)象的長(zhǎng)度。max()和min()函數(shù)分別返回可迭代對(duì)象中的最大值和最小值,還可以使用key參數(shù)自定義比較標(biāo)準(zhǔn),如max(names,key=len)返回最長(zhǎng)的名字。type()函數(shù)返回對(duì)象的類型,常用于調(diào)試和類型檢查。enumerate()函數(shù)為迭代過(guò)程添加計(jì)數(shù)器,返回(索引,值)形式的元組,特別適合在需要同時(shí)獲取元素位置和值的場(chǎng)景中使用。zip()函數(shù)并行迭代多個(gè)序列,將各序列中對(duì)應(yīng)位置的元素配對(duì),返回元組的迭代器,常用于處理相關(guān)數(shù)據(jù)集。map(function,iterable)將函數(shù)應(yīng)用于可迭代對(duì)象的每個(gè)元素,返回結(jié)果的迭代器,如map(str.upper,["a","b","c"])。filter(function,iterable)根據(jù)函數(shù)返回值篩選可迭代對(duì)象中的元素,保留函數(shù)返回True的元素。any()和all()函數(shù)檢查可迭代對(duì)象中的元素是否有任一為真或全部為真。熟練使用這些內(nèi)建函數(shù)可以編寫更簡(jiǎn)潔、更Pythonic的代碼,同時(shí)提高程序效率。匿名函數(shù)lambda基本語(yǔ)法lambda參數(shù):表達(dá)式一行代碼創(chuàng)建簡(jiǎn)單函數(shù),無(wú)需def定義示例:lambdax:x*2與map結(jié)合將函數(shù)應(yīng)用于可迭代對(duì)象的每個(gè)元素list(map(lambdax:x*2,[1,2,3]))結(jié)果:[2,4,6]與filter結(jié)合篩選可迭代對(duì)象中滿足條件的元素list(filter(lambdax:x>5,[3,8,2,7]))結(jié)果:[8,7]常見(jiàn)用途作為參數(shù)傳遞給排序函數(shù)數(shù)據(jù)處理管道中的簡(jiǎn)單轉(zhuǎn)換GUI事件處理程序lambda函數(shù)(也稱為匿名函數(shù))是創(chuàng)建簡(jiǎn)單函數(shù)的簡(jiǎn)潔方式,無(wú)需使用def語(yǔ)句定義完整函數(shù)。lambda函數(shù)由lambda關(guān)鍵字、參數(shù)列表、冒號(hào)和表達(dá)式組成,表達(dá)式的結(jié)果自動(dòng)成為函數(shù)的返回值。lambda函數(shù)特別適合需要一個(gè)簡(jiǎn)單函數(shù)作為參數(shù)的場(chǎng)景,如排序的key函數(shù)、map/filter操作或函數(shù)式編程模式。例如,sorted(students,key=lambdas:s['age'])按學(xué)生年齡排序,簡(jiǎn)潔地表達(dá)了排序邏輯。盡管lambda函數(shù)很方便,但它也有局限性。lambda函數(shù)只能包含單個(gè)表達(dá)式,不能包含多行代碼、賦值語(yǔ)句或其他Python語(yǔ)句。對(duì)于更復(fù)雜的功能,應(yīng)使用常規(guī)def定義函數(shù)。過(guò)度使用lambda可能會(huì)降低代碼可讀性,特別是當(dāng)表達(dá)式變得復(fù)雜或包含多個(gè)操作時(shí)。在處理函數(shù)式編程模式時(shí),functools模塊提供了一些有用的高階函數(shù),如reduce()、partial()和lru_cache(),可以與lambda函數(shù)結(jié)合使用實(shí)現(xiàn)更復(fù)雜的操作。現(xiàn)代Python編程中,列表推導(dǎo)式、生成器表達(dá)式和內(nèi)置函數(shù)的組合通??梢蕴峁┍萳ambda更可讀、更簡(jiǎn)潔的替代方案。列表推導(dǎo)式基本語(yǔ)法[表達(dá)式for變量in可迭代對(duì)象]#生成1到10的平方列表squares=[x**2forxinrange(1,11)]#結(jié)果:[1,4,9,16,25,36,49,64,81,100]帶條件過(guò)濾[表達(dá)式for變量in可迭代對(duì)象if條件]#獲取偶數(shù)的平方even_squares=[x**2forxinrange(1,11)ifx%2==0]#結(jié)果:[4,16,36,64,100]嵌套循環(huán)[表達(dá)式for變量1in可迭代對(duì)象1for變量2in可迭代對(duì)象2]#生成坐標(biāo)對(duì)coordinates=[(x,y)forxinrange(3)foryinrange(2)]#結(jié)果:[(0,0),(0,1),(1,0),(1,1),(2,0),(2,1)]列表推導(dǎo)式是Python中一種創(chuàng)建列表的簡(jiǎn)潔方式,它將循環(huán)和條件邏輯壓縮成一行代碼。相比傳統(tǒng)的循環(huán)構(gòu)建列表,列表推導(dǎo)式通常更為高效和易讀。最簡(jiǎn)單的形式是[表達(dá)式for變量in可迭代對(duì)象],這等價(jià)于創(chuàng)建空列表,然后通過(guò)for循環(huán)逐個(gè)添加元素。當(dāng)需要過(guò)濾元素時(shí),可以使用if條件,如[表達(dá)式for變量in可迭代對(duì)象if條件]。這種模式不僅簡(jiǎn)化了代碼,還能減少引入錯(cuò)誤的機(jī)會(huì)。列表推導(dǎo)式可以包含嵌套循環(huán),形式為[表達(dá)式for變量1in可迭代對(duì)象1for變量2in可迭代對(duì)象2],注意這相當(dāng)于外層循環(huán)在前,內(nèi)層循環(huán)在后的嵌套for循環(huán)。雖然理論上可以包含多層嵌套循環(huán)和復(fù)雜條件,但過(guò)于復(fù)雜的推導(dǎo)式可能降低可讀性,應(yīng)適當(dāng)拆分以保持代碼清晰。在內(nèi)存使用方面,列表推導(dǎo)式會(huì)一次性生成整個(gè)列表,對(duì)于處理大量數(shù)據(jù)時(shí)可能消耗大量?jī)?nèi)存。如果只需要逐個(gè)處理元素而不需要存儲(chǔ)整個(gè)結(jié)果列表,應(yīng)考慮使用生成器表達(dá)式,語(yǔ)法類似但使用圓括號(hào)而非方括號(hào),如(x**2forxinrange(1000))。生成器表達(dá)式是惰性求值的,僅在需要時(shí)才計(jì)算下一個(gè)值,大大減少內(nèi)存使用。元組與字典推導(dǎo)式元組特性?不可變序列,創(chuàng)建后不能修改?沒(méi)有直接的"元組推導(dǎo)式"語(yǔ)法?可以使用生成器表達(dá)式轉(zhuǎn)換為元組:tuple(x**2forxinrange(5))#結(jié)果:(0,1,4,9,16)?注意括號(hào)語(yǔ)法(xforxinrange(5))創(chuàng)建的是生成器,而不是元組字典推導(dǎo)式?使用花括號(hào)和冒號(hào)創(chuàng)建字典?基本語(yǔ)法:{鍵表達(dá)式:值表達(dá)式for變量in可迭代對(duì)象}#創(chuàng)建數(shù)字及其平方的映射squares={x:x**2forxinrange(1,6)}#結(jié)果:{1:1,2:4,3:9,4:16,5:25}?可以包含條件過(guò)濾:#只包含偶數(shù)的平方映射even_squares={x:x**2forxinrange(1,11)ifx%2==0}#結(jié)果:{2:4,4:16,6:36,8:64,10:100}元組是Python中的不可變序列類型,雖然沒(méi)有直接的"元組推導(dǎo)式"語(yǔ)法,但可以使用生成器表達(dá)式創(chuàng)建元組。形式為tuple(表達(dá)式for變量in可迭代對(duì)象),這實(shí)際上是先創(chuàng)建一個(gè)生成器表達(dá)式,然后將其轉(zhuǎn)換為元組。需要注意的是,(表達(dá)式for變量in可迭代對(duì)象)創(chuàng)建的是生成器對(duì)象,而不是元組——元組字面量需要使用逗號(hào)分隔的表達(dá)式,如(1,2,3)。元組的不可變性使其適合作為字典鍵或存儲(chǔ)不應(yīng)更改的數(shù)據(jù)集合,但這也意味著無(wú)法像列表那樣在創(chuàng)建后修改其元素。字典推導(dǎo)式提供了一種簡(jiǎn)潔創(chuàng)建字典的方法,語(yǔ)法為{鍵:值for變量in可迭代對(duì)象}。這等價(jià)于創(chuàng)建空字典,然后通過(guò)循環(huán)逐個(gè)添加鍵值對(duì)。字典推導(dǎo)式可以包含條件過(guò)濾,如{鍵:值for變量in可迭代對(duì)象if條件},只有滿足條件的元素才會(huì)被添加到字典中。此外,字典推導(dǎo)式非常適合進(jìn)行鍵值轉(zhuǎn)換或從其他數(shù)據(jù)結(jié)構(gòu)創(chuàng)建字典。例如,可以使用{key:valueforkey,valueinsome_dict.items()ifcondition}基于現(xiàn)有字典創(chuàng)建新字典,或使用{item:item_countforitem,item_countincounter.items()ifitem_count>threshold}篩選計(jì)數(shù)器中超過(guò)特定閾值的項(xiàng)。字典推導(dǎo)式結(jié)合zip()函數(shù)也是創(chuàng)建從兩個(gè)平行列表形成鍵值對(duì)的有效方法,如{k:vfork,vinzip(keys,values)}。字符串高級(jí)操作Python字符串提供了豐富的內(nèi)置方法,使得文本處理變得高效簡(jiǎn)便。split()方法將字符串按指定分隔符分割成列表,如"apple,banana,cherry".split(",")返回["apple","banana","cherry"];而join()方法則是split的逆操作,將列表元素連接成字符串,如",".join(["apple","banana","cherry"])返回"apple,banana,cherry"。replace()方法用于替換字符串中的子串,如"HelloWorld".replace("World","Python")返回"HelloPython",還可以指定最大替換次數(shù)。字符串查找與修整也是常見(jiàn)需求。find()、index()、rfind()和rindex()方法用于查找子串位置,區(qū)別是index系列在未找到時(shí)會(huì)引發(fā)ValueError異常,而find系列則返回-1。startswith()和endswith()方法檢查字符串是否以特定子串開(kāi)始或結(jié)束。strip()、lstrip()和rstrip()方法分別用于移除字符串兩端、左端和右端的特定字符(默認(rèn)為空白字符)。大小寫轉(zhuǎn)換方法包括upper()、lower()、capitalize()、title()和swapcase(),分別用于轉(zhuǎn)換為全大寫、全小寫、首字母大寫、每個(gè)單詞首字母大寫和大小寫互換。對(duì)于更復(fù)雜的字符串模式匹配和操作,可以使用re模塊提供的正則表達(dá)式功能,如查找復(fù)雜模式、提取信息或進(jìn)行條件替換等。字典的深入用法安全訪問(wèn)使用get()方法避免KeyError默認(rèn)值setdefault()設(shè)置缺失鍵的默認(rèn)值合并更新update()合并兩個(gè)字典高效遍歷使用items()同時(shí)獲取鍵值對(duì)字典是Python中最強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)之一,掌握其高級(jí)用法可以大大提升代碼質(zhì)量和效率。get()方法是安全訪問(wèn)字典元素的首選方式,它接受一個(gè)鍵和一個(gè)可選的默認(rèn)值(默認(rèn)為None),如果鍵不存在則返回默認(rèn)值而不引發(fā)KeyError。例如,user_info.get("email","無(wú)郵箱")在用戶信息中沒(méi)有email鍵時(shí)返回"無(wú)郵箱"。setdefault()方法則更進(jìn)一步,如果鍵不存在,它會(huì)同時(shí)設(shè)置該鍵的值并返回它;如果鍵已存在,則只返回對(duì)應(yīng)值而不修改。這在需要初始化字典值的場(chǎng)景中特別有用,如word_counts.setdefault(word,0)+=1計(jì)算單詞出現(xiàn)次數(shù)。update()方法用于合并兩個(gè)字典,或者用鍵值對(duì)更新字典,如user_info.update({"email":"new@","phone":"123456"})。在Python3.9+,還可以使用|運(yùn)算符合并字典,如combined_dict=dict1|dict2。對(duì)于字典的高效遍歷,items()方法返回包含所有(鍵,值)對(duì)的視圖對(duì)象,允許使用forkey,valueinmy_dict.items():同時(shí)獲取鍵和值。字典還提供了keys()和values()方法分別獲取所有鍵和值的視圖。collections模塊提供了幾個(gè)字典的特殊變體,如defaultdict(為缺失鍵提供默認(rèn)值的字典)、OrderedDict(保持插入順序的字典,雖然自Python3.7起普通字典也保留插入順序)和Counter(計(jì)數(shù)器,用于計(jì)算可哈希對(duì)象出現(xiàn)的次數(shù))。這些特殊字典類型可以簡(jiǎn)化許多常見(jiàn)任務(wù),提高代碼可讀性。集合操作與去重創(chuàng)建與去重集合自動(dòng)去除重復(fù)元素,可通過(guò)set()函數(shù)將其他集合轉(zhuǎn)換為集合1添加元素使用add()方法添加單個(gè)元素,update()方法添加多個(gè)元素刪除元素remove()刪除指定元素(不存在時(shí)拋出錯(cuò)誤),discard()安全刪除(不存在時(shí)不拋錯(cuò))集合運(yùn)算并集(|)、交集(&)、差集(-)、對(duì)稱差集(^)等數(shù)學(xué)集合運(yùn)算集合是Python中的無(wú)序、可變集合類型,其中每個(gè)元素都是唯一的。集合的這種特性使其成為去除重復(fù)元素的理想工具,只需使用set()函數(shù)將其他可迭代對(duì)象轉(zhuǎn)換為集合,如unique_items=set(items_list)。集合也支持字面量語(yǔ)法,使用花括號(hào)創(chuàng)建,如{1,2,3}。需要注意的是,空花括號(hào){}創(chuàng)建的是空字典而非空集合,應(yīng)使用set()創(chuàng)建空集合。集合中的元素必須是可哈希的(即不可變的),因此可以包含數(shù)字、字符串、元組等不可變類型,但不能包含列表、字典等可變類型。集合提供了高效的成員檢查操作,如elementinmy_set的時(shí)間復(fù)雜度是O(1),這比在列表中查找元素(O(n))要快得多。集合也支持強(qiáng)大的數(shù)學(xué)集合運(yùn)算,包括并集(union,|)、交集(intersection,&)、差集(difference,-)和對(duì)稱差集(symmetric_difference,^)。這些操作既可以通過(guò)方法調(diào)用,也可以通過(guò)運(yùn)算符完成,如set1|set2等價(jià)于set1.union(set2)。此外,集合支持比較操作,如子集檢查(issubset,<=)、真子集檢查(<)、超集檢查(issuperset,>=)和真超集檢查(>)。集合的可變性使其可以通過(guò)add()、remove()、discard()、pop()等方法修改內(nèi)容。如果需要不可變的集合,可以使用frozenset類型,它具有集合的所有功能,但創(chuàng)建后不能修改,因此可以作為字典的鍵或其他集合的元素。文件操作基礎(chǔ)打開(kāi)文件使用open()函數(shù)打開(kāi)文件,指定文件路徑和模式file=open("example.txt","r")#只讀模式打開(kāi)常見(jiàn)模式:"r"(只讀)、"w"(寫入,覆蓋)、"a"(追加)、"b"(二進(jìn)制)讀取內(nèi)容read():讀取整個(gè)文件內(nèi)容readline():讀取單行readlines():讀取所有行返回列表forlineinfile:逐行迭代寫入內(nèi)容write():寫入字符串writelines():寫入字符串列表注意:寫入模式會(huì)覆蓋現(xiàn)有內(nèi)容,追加模式則添加到末尾關(guān)閉文件close():手動(dòng)關(guān)閉文件釋放資源建議使用with語(yǔ)句自動(dòng)關(guān)閉文件,避免資源泄露withopen("example.txt","r")asfile:content=file.read()文件操作是程序中常見(jiàn)的任務(wù),Python提供了簡(jiǎn)單而強(qiáng)大的文件處理接口。open()函數(shù)是文件操作的第一步,它接受文件路徑和模式參數(shù),返回一個(gè)文件對(duì)象。模式參數(shù)指定了如何打開(kāi)文件:"r"表示只讀(默認(rèn)),"w"表示寫入(會(huì)覆蓋已有內(nèi)容),"a"表示追加(保留已有內(nèi)容),"x"表示專屬創(chuàng)建(如果文件已存在則失?。?。這些模式可以與"b"組合用于二進(jìn)制模式,如"rb"表示二進(jìn)制只讀。此外,還可以與"+"組合表示讀寫模式,如"r+"。在指定文件路徑時(shí),可以使用相對(duì)路徑或絕對(duì)路徑,對(duì)于Windows系統(tǒng),注意使用原始字符串(如r"C:\path\to\file")或正斜杠("C:/path/to/file")避免轉(zhuǎn)義字符問(wèn)題。文件對(duì)象提供了多種讀取方法。read()方法讀取整個(gè)文件內(nèi)容為一個(gè)字符串,可以指定最大讀取字節(jié)數(shù);readline()方法讀取一行(包括換行符);readlines()方法讀取所有行并返回列表,每個(gè)元素是一行內(nèi)容。文件對(duì)象本身是可迭代的,可以使用for循環(huán)逐行處理文件內(nèi)容,這是處理大文件的內(nèi)存高效方式。寫入文件使用write()方法寫入字符串,或使用writelines()方法寫入字符串列表(注意不會(huì)自動(dòng)添加換行符)。文件使用完畢后,應(yīng)調(diào)用close()方法關(guān)閉文件并釋放系統(tǒng)資源。為確保文件正確關(guān)閉,推薦使用with語(yǔ)句(上下文管理器),它會(huì)在代碼塊執(zhí)行完畢后自動(dòng)關(guān)閉文件,即使遇到異常也能保證資源釋放,這是文件操作的最佳實(shí)踐。文件讀取與寫入逐行讀取#使用for循環(huán)逐行讀?。ㄍ扑])withopen("example.txt","r",encoding="utf-8")asfile:forlineinfile:print(line.strip())#移除行尾換行符#使用readlines()讀取所有行withopen("example.txt","r",encoding="utf-8")asfile:lines=file.readlines()forlineinlines:print(line.strip())全部讀取#一次性讀取整個(gè)文件withopen("example.txt","r",encoding="utf-8")asfile:content=file.read()print(content)#指定最大讀取字節(jié)數(shù)withopen("example.txt","r",encoding="utf-8")asfile:chunk=file.read(1024)#讀取1KB數(shù)據(jù)文件寫入#寫入字符串withopen("output.txt","w",encoding="utf-8")asfile:file.write("第一行\(zhòng)n")file.write("第二行\(zhòng)n")#寫入列表內(nèi)容lines=["第一行","第二行","第三行"]withopen("output.txt","w",encoding="utf-8")asfile:forlineinlines:f
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年臨海市頭門港中心幼兒園招聘?jìng)淇碱}庫(kù)參考答案詳解
- 2026年廈門市金雞亭小學(xué)補(bǔ)充非在編人員招聘?jìng)淇碱}庫(kù)帶答案詳解
- 2026年崇左市江州區(qū)消防救援大隊(duì)政府專職消防員公開(kāi)招聘?jìng)淇碱}庫(kù)帶答案詳解
- 2026年古城區(qū)疾病預(yù)防控制中心臨聘人員招聘?jìng)淇碱}庫(kù)及參考答案詳解一套
- 2026年大連商品交易所招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 2026年屏南縣總醫(yī)院(屏南縣醫(yī)院)招聘編外藥劑人員備考題庫(kù)及參考答案詳解一套
- 2026年弋江區(qū)招聘警民聯(lián)調(diào)室專職人民調(diào)解員備考題庫(kù)及一套答案詳解
- 2026年中國(guó)聯(lián)通甘孜州分公司招聘?jìng)淇碱}庫(kù)有答案詳解
- 2026年三亞市立才學(xué)校臨聘教師招聘?jìng)淇碱}庫(kù)有答案詳解
- 2026年廣州大學(xué)教育學(xué)院(師范學(xué)院)科研秘書招聘?jìng)淇碱}庫(kù)及1套參考答案詳解
- 風(fēng)險(xiǎn)金管理辦法
- 煙花爆竹安全生產(chǎn)會(huì)議
- 綠化養(yǎng)護(hù)中病蟲(chóng)害重點(diǎn)難點(diǎn)及防治措施
- 學(xué)堂在線 雨課堂 學(xué)堂云 工程倫理2.0 章節(jié)測(cè)試答案
- 生態(tài)旅游區(qū)建設(shè)場(chǎng)地地質(zhì)災(zāi)害危險(xiǎn)性評(píng)估報(bào)告
- 網(wǎng)絡(luò)傳播法規(guī)(自考14339)復(fù)習(xí)題庫(kù)(含答案)
- 民辦學(xué)校退費(fèi)管理制度
- T/CIE 115-2021電子元器件失效機(jī)理、模式及影響分析(FMMEA)通用方法和程序
- KubeBlocks把所有數(shù)據(jù)庫(kù)運(yùn)行到K8s上
- 廣東省江門市蓬江區(qū)2025年七年級(jí)上學(xué)期語(yǔ)文期末考試試卷及答案
- 蘇州市施工圖無(wú)障礙設(shè)計(jì)專篇參考樣式(試行)2025
評(píng)論
0/150
提交評(píng)論