Python數(shù)據(jù)處理、分析、可視化與數(shù)據(jù)化運(yùn)營 (第二版) 課件 第2章 Python基本語法_第1頁
Python數(shù)據(jù)處理、分析、可視化與數(shù)據(jù)化運(yùn)營 (第二版) 課件 第2章 Python基本語法_第2頁
Python數(shù)據(jù)處理、分析、可視化與數(shù)據(jù)化運(yùn)營 (第二版) 課件 第2章 Python基本語法_第3頁
Python數(shù)據(jù)處理、分析、可視化與數(shù)據(jù)化運(yùn)營 (第二版) 課件 第2章 Python基本語法_第4頁
Python數(shù)據(jù)處理、分析、可視化與數(shù)據(jù)化運(yùn)營 (第二版) 課件 第2章 Python基本語法_第5頁
已閱讀5頁,還剩118頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Python基本語法02Python數(shù)據(jù)處理、分析、可視化與數(shù)據(jù)化運(yùn)營(第二版)本章學(xué)習(xí)目標(biāo)深入理解Python的基本特性和語法規(guī)則全面掌握Python的數(shù)據(jù)類型和結(jié)構(gòu),熟悉類型判斷與轉(zhuǎn)換方法熟練應(yīng)用條件判斷、循環(huán)、運(yùn)算符等控制流程和邏輯處理復(fù)雜問題熟悉文本處理和正則表達(dá)式的關(guān)鍵技能,有效進(jìn)行字符串操作和模式匹配熟練使用函數(shù)、類、高階函數(shù)等實(shí)現(xiàn)代碼模塊化封裝,提升代碼重用性和維護(hù)性靈活應(yīng)用Pandas庫進(jìn)行常見的數(shù)據(jù)處理和分析工作2.1Python基礎(chǔ)Python解釋器的作用聲明編碼:設(shè)置文件字符編碼縮進(jìn)與執(zhí)行域:代碼結(jié)構(gòu)的重要性優(yōu)雅換行:處理長語句的技巧注釋的力量:單行和多行注釋的應(yīng)用命名與賦值:變量規(guī)則和賦值方法2.1Python基礎(chǔ)Python解釋器的作用含義:解釋并執(zhí)行Python文件的程序基本語法:使用#!引導(dǎo)Python解釋器的具體路徑語法位置:腳本的第一行#!/usr/bin/python2.1Python基礎(chǔ)聲明編碼:設(shè)置文件字符編碼含義:用于指定Python解釋器讀取文件時(shí)的編碼規(guī)則基本語法:例如,聲明中文編碼可用語法位置:如果首行是Python解釋器信息,那么編碼就在第二行;否則編碼應(yīng)該在首行#coding=<encodingname>或者#-*-coding:<encodingname>-*-“#coding=utf-8”或“#-*-coding:utf-8-*-”。2.1Python基礎(chǔ)縮進(jìn)與執(zhí)行域:代碼結(jié)構(gòu)的重要性用途:通過不同層次的縮進(jìn)實(shí)現(xiàn)功能范圍的界定基本語法:一般上,在Python中以4個(gè)英文空格為單位實(shí)現(xiàn)不同層級(jí)的縮進(jìn),且不同層級(jí)的縮進(jìn)量必須相同示例(偽代碼):如果a>5:#層級(jí)1

打印a>5#層級(jí)2否則:#層級(jí)1

打印a<5#層級(jí)22.1Python基礎(chǔ)優(yōu)雅換行:處理長語句的技巧print(‘這是一個(gè)條非常非常非常非常非常非常非常非常非常很長很長很長很長的語句’)#未斷行print('這是一個(gè)條非常非常非常非常非常非常非常非常非常\很長很長很長很長的語句‘)#斷行用途:為提高可讀性,可將過長語句分為多行長度建議:一般每行長度不超過79或80個(gè)字符(注意:該長度不是必須的,只是建議值)用法:使用反斜杠\斷行,示例:2.1Python基礎(chǔ)注釋的力量:單行和多行注釋的應(yīng)用用途:注釋是編寫代碼時(shí)用于解釋程序特定部分用途、功能或注意事項(xiàng)的文本除極簡單的代碼外,大部分程序都應(yīng)包含注釋。注釋可分為單行注釋和多行注釋。2.1Python基礎(chǔ)注釋的力量:單行和多行注釋的應(yīng)用單行注釋單行注釋用于解釋特定語句或行,使用#符號(hào)。例如:print('LearnPython')#打印輸出字符串——這里是注釋信息2.1Python基礎(chǔ)注釋的力量:單行和多行注釋的應(yīng)用多行注釋多行注釋適用于解釋復(fù)雜功能或模塊化代碼,如函數(shù)、類。使用三個(gè)單引號(hào)'''或三個(gè)雙引號(hào)"""包圍注釋內(nèi)容。例如:'''這是多行注釋第一行這是多行注釋第二行'''print('LearnPython')2.1Python基礎(chǔ)命名與賦值:變量規(guī)則和賦值方法命名規(guī)則(1)變量名可由字母、數(shù)字、下劃線組成,但不能以數(shù)字開頭。(2)變量名不得使用Python關(guān)鍵字,如if、while、enumerate、true等。(3)變量名區(qū)分大小寫,如a=1和A=1代表不同變量。(4)推薦使用行業(yè)通用且有意義的變量名,以便理解其含義。2.1Python基礎(chǔ)命名與賦值:變量規(guī)則和賦值方法變量賦值變量賦值使用等號(hào)=。左側(cè)為變量名,右側(cè)為賦予的值。任何對(duì)象都可賦值給變量,包括數(shù)字、字符串、日期、數(shù)組、矩陣等。例如:is_man=1is_woman=False2.2數(shù)據(jù)類型數(shù)字型數(shù)據(jù):整數(shù)型、浮點(diǎn)型、布爾型和復(fù)數(shù)型字符串型數(shù)據(jù):文本處理基礎(chǔ)日期型數(shù)據(jù):時(shí)間的表示與操作數(shù)據(jù)類型的多樣性:判斷與轉(zhuǎn)換技巧2.2數(shù)據(jù)類型數(shù)字型數(shù)據(jù):整數(shù)型、浮點(diǎn)型、布爾型和復(fù)數(shù)型Python的數(shù)字類型主要包括整數(shù)型、浮點(diǎn)型、布爾型和復(fù)數(shù)型。a1=2#整數(shù)型,等價(jià)于int(2)a2=2.1#浮點(diǎn)型,等價(jià)于float(2.1)a3=True#布爾型,等價(jià)于bool(1)a4=complex(1)#復(fù)數(shù)型其中,a1定義為整數(shù)型、a2為浮點(diǎn)型、a3為布爾型、a4為復(fù)數(shù)型。(1)整數(shù)型(a1)可包含正數(shù)、負(fù)數(shù)和0。(2)浮點(diǎn)型(a2)通常為雙精度,取決于底層機(jī)器架構(gòu)。(3)布爾型(a3)只包含True和False兩種值,在計(jì)算時(shí)True視為1,F(xiàn)alse視為0。(4)復(fù)數(shù)型(a4)通常用complex方法創(chuàng)建,以一對(duì)雙精度浮點(diǎn)數(shù)表示復(fù)數(shù)值,使用較少。2.2數(shù)據(jù)類型字符串型數(shù)據(jù):文本處理基礎(chǔ)字符串以字符為處理單位,而bytes類型以字節(jié)為單位。下面的a5和a6分別是字符串和bytes類型的實(shí)例。a5='字符串'#字符串a(chǎn)6=bytes('字符串','utf-8')#bytes(1)字符串(a5)由Unicode碼位值組成,范圍是U+0000至U+10FFFF,可表示各種字符,如中文、英文、標(biāo)點(diǎn)符號(hào)等。字符串可通過單引號(hào)、雙引號(hào)或三引號(hào)創(chuàng)建。例如,a5='字符串'、a5="字符串"、a5="""字符串"""和a5='''字符串'''是等價(jià)效果。(2)bytes類型(a6)可通過bytes()方法或前綴b加字符串創(chuàng)建,bytes方法可指定編碼,如utf-8,而b''要求字符串必須是ASCII字符串。2.2數(shù)據(jù)類型日期型數(shù)據(jù):時(shí)間的表示與操作日期數(shù)據(jù)不是Python內(nèi)置類型,而是標(biāo)準(zhǔn)庫time和datetime中的類型。此外,calendar庫也可操作日期時(shí)間。由于日期在事務(wù)型數(shù)據(jù)中常見,這里介紹常用的日期類型,以datetime庫為例。2.2數(shù)據(jù)類型日期型數(shù)據(jù):時(shí)間的表示與操作1fromdatetimeimportdatetime2date_info=datetime.today().date().strftime('%Y-%m-%d')3time_info=datetime.today().time().strftime('%H:%M:%S')4Datetime_info=datetime.now().strftime('%Y-%m-%d%H:%M:%S')5Datetimestamp_info=datetime.now().strftime('%Y-%m-%d%H:%M:%S%f')6Datetimestamp_info2=datetime.now().timestamp()第1行導(dǎo)入datetime模塊。代碼2、3、4、5、6分別獲取當(dāng)前日期、時(shí)間、日期時(shí)間、兩種時(shí)間戳格式。(1)Date:由代碼2實(shí)現(xiàn)的日期,格式為YYYY-MM-DD。(2)Time:由代碼3實(shí)現(xiàn)的時(shí)間,格式為HH:MM:SS。(3)Datetime:由代碼4實(shí)現(xiàn)的日期時(shí)間,格式為YYYY-MM-DDHH:MM:SS。(4)Datetimestamp:代碼5和6實(shí)現(xiàn)的時(shí)間戳,分別為日期時(shí)間毫秒級(jí)格式和Unix時(shí)間戳。2.2數(shù)據(jù)類型數(shù)據(jù)類型的多樣性:判斷與轉(zhuǎn)換技巧判斷數(shù)據(jù)類型可使用type或isinstance方法。(1)type(object)直接返回對(duì)象的類型。(2)isinstance(object,class_or_tuple)判斷對(duì)象是否為指定類型或元組中的類型,返回布爾值。例如:數(shù)據(jù)類型的判斷方法type(a5)#使用type方法判斷類型,返回strisinstance(a5,(int,bytes))#使用isinstance方法判斷類型是否為int或bytes類型,返回False2.2數(shù)據(jù)類型數(shù)據(jù)類型的多樣性:判斷與轉(zhuǎn)換技巧字符串str和bytes類型相互轉(zhuǎn)換str_to_bytes=str.encode(a5)#將字符串轉(zhuǎn)換為bytes類型,默認(rèn)utf-8編碼bytes_to_str=bytes.decode(str_to_bytes)#將bytes解碼為字符串,默認(rèn)utf-8解碼2.2數(shù)據(jù)類型數(shù)據(jù)類型的多樣性:判斷與轉(zhuǎn)換技巧字符串str和數(shù)字Number類型相互轉(zhuǎn)換a7='1'#定義一個(gè)必須能轉(zhuǎn)換為數(shù)字的字符串對(duì)象str_to_int=int(a7)#使用int方法將字符串轉(zhuǎn)換為整數(shù)型str_to_int=float(a7)#使用float方法將字符串轉(zhuǎn)換為浮點(diǎn)型str_to_bool=bool(a7)#使用bool方法將字符串轉(zhuǎn)換為浮點(diǎn)型str_to_complex=complex(a7)#使用complex方法將字符串轉(zhuǎn)換為復(fù)數(shù)型字符串轉(zhuǎn)換為數(shù)字類型的方法2.2數(shù)據(jù)類型數(shù)據(jù)類型的多樣性:判斷與轉(zhuǎn)換技巧字符串str和數(shù)字Number類型相互轉(zhuǎn)換int_to_str=str(str_to_int)#使用str方法轉(zhuǎn)換為字符串型數(shù)字類型轉(zhuǎn)換為字符串直接使用str方法即可,示例字符串與數(shù)字類型相互轉(zhuǎn)換時(shí)需注意以下幾點(diǎn):(1)僅能將表示數(shù)字的字符串轉(zhuǎn)換為數(shù)字類型。例如,字符串'12'可以轉(zhuǎn)換為數(shù)字,而'abcd'則不可。(2)字符串轉(zhuǎn)換為布爾型時(shí),空字符串返回False,非空字符串返回True。2.2數(shù)據(jù)類型數(shù)據(jù)類型的多樣性:判斷與轉(zhuǎn)換技巧字符串str與日期類型的相互轉(zhuǎn)換datetime_to_str=datetime.now().strftime('%Y-%m-%d%H:%M:%S')#將當(dāng)前日期時(shí)間格式化為字符串字符串與日期之間的轉(zhuǎn)換涉及兩個(gè)關(guān)鍵方法:strftime和strptime。strftime用于將日期格式化為字符串,而strptime則將字符串解析為日期對(duì)象。日期轉(zhuǎn)字符串:使用datetime對(duì)象的strftime方法。這個(gè)方法根據(jù)給定的格式化字符串將日期對(duì)象轉(zhuǎn)換為文本表示。例如:2.2數(shù)據(jù)類型數(shù)據(jù)類型的多樣性:判斷與轉(zhuǎn)換技巧字符串str與日期類型的相互轉(zhuǎn)換str_to_datetime=datetime.strptime(datetime_to_str,'%Y-%m-%d%H:%M:%S')#將字符串解析為日期對(duì)象字符串與日期之間的轉(zhuǎn)換涉及兩個(gè)關(guān)鍵方法:strftime和strptime。strftime用于將日期格式化為字符串,而strptime則將字符串解析為日期對(duì)象。字符串轉(zhuǎn)日期:使用datetime模塊的strptime方法。該方法根據(jù)指定的格式字符串將文本解析為日期對(duì)象。例如:2.3數(shù)據(jù)結(jié)構(gòu)列表:有序數(shù)據(jù)的集合與推導(dǎo)式元組:不可變的數(shù)據(jù)集合與推導(dǎo)式字典:鍵值對(duì)的映射與推導(dǎo)式集合:獨(dú)特元素的集合與推導(dǎo)式數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換與判斷2.3數(shù)據(jù)結(jié)構(gòu)列表:有序數(shù)據(jù)的集合與推導(dǎo)式列表是一個(gè)有序且可變的集合,允許包含多種數(shù)據(jù)類型??勺冃灾噶斜韮?nèi)元素可以更改,有序性意味著元素有固定的排列順序。list_example1=[]list_example2=list()list_example3=[1,True,b'bytes',['a','b']]創(chuàng)建列表:使用中括號(hào)[]或list()方法2.3數(shù)據(jù)結(jié)構(gòu)列表:有序數(shù)據(jù)的集合與推導(dǎo)式列表是一個(gè)有序且可變的集合,允許包含多種數(shù)據(jù)類型??勺冃灾噶斜韮?nèi)元素可以更改,有序性意味著元素有固定的排列順序。values=[1,True,b'bytes',['a','b']]#列表包括4個(gè)元素,其中第4個(gè)元素為列表。values[3]#獲取列表的第四個(gè)元素,結(jié)果為['a','b']values[-1]#獲取列表的最后一個(gè)元素,結(jié)果為['a','b']values[:2]#獲取列表前2個(gè)元素,結(jié)果為[1,True]values[-3:-1]#獲取列表倒數(shù)第一個(gè)到倒數(shù)第3個(gè)元素,結(jié)果為[True,b'bytes']values[::2]#獲取列表中從頭開始的間隔1個(gè)取一個(gè)的元素,結(jié)果為[1,b'bytes']values[3][1]#獲取列表中低4個(gè)元素的第二個(gè)值,結(jié)果為'b'獲取元素:基于索引的元素訪問2.3數(shù)據(jù)結(jié)構(gòu)列表:有序數(shù)據(jù)的集合與推導(dǎo)式用途方法說明示例追加append(object)追加元素到列表,默認(rèn)追加在最后,用于追加單個(gè)元素In:a=[1,2,3]In:a.append(4)In:aOut:[1,2,3,4]清空clear()清空整個(gè)列表In:a=[1,2,3]In:a.clear()In:aOut:[]復(fù)制copy()復(fù)制(拷貝)列表為新列表In:a=[1,2,3]In:b=a.copy()In:bOut:[1,2,3]列表操作2.3數(shù)據(jù)結(jié)構(gòu)列表操作用途方法說明示例批量追加extend(iterable)將另外一份列表對(duì)象批量追加到列表中,用于列表的擴(kuò)展In:a=[1,2,3]In:b=[4,5]In:a.extend(b)In:aOut:[1,2,3,4,5]查詢值的索引index(value)查詢從列表中某個(gè)值第一個(gè)匹配項(xiàng)的索引值In:a=[1,2,3]In:a.index(2)Out:1插入insert(index,object)將對(duì)象插入列表,與append不同的是可指定插入位置In:a=[1,2,3]In:a.insert(1,4)In:aOut:[1,4,2,3]列表操作2.3數(shù)據(jù)結(jié)構(gòu)列表操作用途方法說明示例按索引刪除元素pop(index=-1)移除列表中的一個(gè)(默認(rèn)最后一個(gè))元素,并且返回該元素的值。使用index值指定刪除的位置In:a=[1,2,3]In:a.pop()Out:3In:aOut:[1,2]按值刪除元素remove(value)移除列表中某個(gè)值的第一個(gè)匹配項(xiàng)In:a=[1,2,3]In:a.remove(1)In:aOut:[2,3]反轉(zhuǎn)列表reverse()反轉(zhuǎn)列表In:a=[1,2,3]In:a.reverse()In:aOut:[3,2,1]列表操作2.3數(shù)據(jù)結(jié)構(gòu)列表操作用途方法說明示例排序列表sort(*,key=None,reverse=False)按列表元素大小排序,通過reverse參數(shù)可指定倒序排序In:a=[1,3,2]In:a.sort()In:aOut:[1,2,3]查看列表長度len(object)查看列表中有多少個(gè)對(duì)象In:a=[1,3,2]In:len(a)Out:3列表操作2.3數(shù)據(jù)結(jié)構(gòu)列表:有序數(shù)據(jù)的集合與推導(dǎo)式列表推導(dǎo)式:列表推導(dǎo)式是Python中一種高效的數(shù)據(jù)處理方式,允許元素在列表內(nèi)部直接進(jìn)行計(jì)算。[i*2foriinrange(5)]#結(jié)果為[0,2,4,6,8]示例1:進(jìn)行簡單計(jì)算。以下示例從range(5)中取出每個(gè)i并乘以2并返回結(jié)果:defsum(n):returnn+n/2[sum(i)foriinrange(5)]#輸出[0.0,1.5,3.0,4.5,6.0]示例2:結(jié)合函數(shù)計(jì)算。在列表推導(dǎo)式中應(yīng)用該函數(shù),對(duì)每個(gè)元素進(jìn)行計(jì)算并返回結(jié)果2.3數(shù)據(jù)結(jié)構(gòu)元組:不可變的數(shù)據(jù)集合與推導(dǎo)式元組是一種不可變的有序集合,可以包含任意類型的數(shù)據(jù)。與列表相比,元組的主要區(qū)別在于其不可變性。tuple_example1=()tuple_example2=tuple()#元組也支持嵌套tuple_example3=(1,True,b'bytes',('a','b'))創(chuàng)建元組:使用小括號(hào)()或tuple()函數(shù)2.3數(shù)據(jù)結(jié)構(gòu)元組:不可變的數(shù)據(jù)集合與推導(dǎo)式用途方法說明示例計(jì)數(shù)count(value)查看元素的出現(xiàn)次數(shù)In:a=(1,2,2,2,3)In:a.count(2)Out:3查看索引index(value)查看特定值的第一次出現(xiàn)的索引位置In:a=(1,2,2,2,3)In:a.index(2)Out:1查看元組長度len(object)查看元組中有多少個(gè)對(duì)象In:a=(1,2,2,2,3)In:len(a)Out:5元組操作:由于元組的不可變性,它不支持像列表那樣的編輯操作(如添加、刪除、清空),僅支持查看操作。2.3數(shù)據(jù)結(jié)構(gòu)元組:不可變的數(shù)據(jù)集合與推導(dǎo)式用途方法說明示例計(jì)數(shù)count(value)查看元素的出現(xiàn)次數(shù)In:a=(1,2,2,2,3)In:a.count(2)Out:3查看索引index(value)查看特定值的第一次出現(xiàn)的索引位置In:a=(1,2,2,2,3)In:a.index(2)Out:1元組操作:由于元組的不可變性,它不支持像列表那樣的編輯操作(如添加、刪除、清空),僅支持查看操作。2.3數(shù)據(jù)結(jié)構(gòu)元組:不可變的數(shù)據(jù)集合與推導(dǎo)式事實(shí)上,元組沒有直接的推導(dǎo)式。如果嘗試使用與列表類似的推導(dǎo)式,得到的將是一個(gè)生成器對(duì)象,而非元組本身。例如,執(zhí)行以下代碼:a=(i*2foriinrange(5))#這是一個(gè)推導(dǎo)式tuple_result=tuple(a)#將生成器轉(zhuǎn)換為元組查看a的類型(type(a)),會(huì)發(fā)現(xiàn)其類型是<generatorobject<genexpr>at0x0000000004766390>,這表明a是一個(gè)生成器對(duì)象,而不是元組。要將這個(gè)生成器對(duì)象轉(zhuǎn)換為元組或列表,可以使用tuple或list函數(shù)。例如:2.3數(shù)據(jù)結(jié)構(gòu)字典:鍵值對(duì)的映射與推導(dǎo)式字典是一個(gè)可變集合,以鍵值對(duì)(Key:Value)形式存儲(chǔ)數(shù)據(jù)。例如,將'王守城'的語文成績表示為:{'王守城':99}。dict_example1={1:'a'}

dict_example2=dict([(1,'a')])創(chuàng)建字典:使用大括號(hào){}或dict()函數(shù)字典的鍵必須是不可變類型,如字符串或元組,而值可以是任意類型,包括字典本身,允許嵌套。例如dict_example3={'tony':98,'lucy':{'firstname':'li'}}2.3數(shù)據(jù)結(jié)構(gòu)字典:鍵值對(duì)的映射與推導(dǎo)式字典是一個(gè)可變集合,以鍵值對(duì)(Key:Value)形式存儲(chǔ)數(shù)據(jù)。例如,將'王守城'的語文成績表示為:{'王守城':99}。values={'tony':98,'lucy':{'firstname':'li'}}#包含嵌套字典的字典values['tony']#獲取字典中Key為tony的值,結(jié)果為98values['lucy']['firstname']#獲取字典中Key為lucy的值,再從值中找到Key為firstname的值,結(jié)果為'li'values.get('tony')#使用字典的get方法獲取Key為tony的值,結(jié)果為98values.keys()#使用字典的keys方法獲取所有的key值,結(jié)果為dict_keys(['tony','lucy']),該類型可使用list轉(zhuǎn)換為列表values.values()#使用字典的values方法獲取values的值,結(jié)果為dict_values([98,{'firstname':'li'}]),該類型可使用list轉(zhuǎn)換為列表values.items()#使用字典的items方法獲取所有的鍵值對(duì)組合,結(jié)果為dict_items([('tony',98),('lucy',{'firstname':'li'})])獲取元素:基于鍵,不同于列表或元組的索引訪問2.3數(shù)據(jù)結(jié)構(gòu)字典:鍵值對(duì)的映射與推導(dǎo)式用途方法說明示例刪除所有元素clear()刪除字典內(nèi)所有元素In:a={'a':1,'b':2}In:a.clear()復(fù)制copy()復(fù)制字典對(duì)象In:a={'a':1,'b':2}In:b=a.copy()In:bOut:{'a':1,'b':2}查看索引setdefault(key,default=None)如果Key不存在與字典中,則設(shè)置默認(rèn)值,與get方法類似In:a={'a':1,'b':2}In:a.setdefault('c',0)In:aOut:{'a':1,'b':2,'c':0}字典操作2.3數(shù)據(jù)結(jié)構(gòu)字典:鍵值對(duì)的映射與推導(dǎo)式用途方法說明示例更新字典update(dict)將另一個(gè)字典中的信息按key更新到現(xiàn)有字典中In:a={'a':1,'b':2}In:b={'a':'fromb'}In:a.update(b)In:aOut:{'a':'fromb','b':2}刪除對(duì)應(yīng)的key的值pop(key,[default])刪除字典給定鍵key所對(duì)應(yīng)的值,返回值為被刪除的值。如果key不存在,則返回default值。In:a={'a':1,'b':2}In:a.pop('a')Out:1In:aOut:{'b':2}字典操作2.3數(shù)據(jù)結(jié)構(gòu)字典:鍵值對(duì)的映射與推導(dǎo)式字典推導(dǎo)式是一種高效快速創(chuàng)建和填充字典的方法。以下是一個(gè)字典推導(dǎo)式的示例:keys=(str(i*i)foriinrange(3))#通過元組推導(dǎo)式生成包含Value值的生成器values=[i+1foriinrange(3)]#列表推導(dǎo)式生成包含Key值的列表dict_final={k:vfork,vinzip(keys,values)}#通過字典推導(dǎo)式調(diào)用上述兩個(gè)對(duì)象生成字典,其結(jié)果為:{'0':1,'1':2,'4':3}2.3數(shù)據(jù)結(jié)構(gòu)集合:獨(dú)特元素的集合與推導(dǎo)式集合是Python中的一個(gè)基本數(shù)據(jù)結(jié)構(gòu),特點(diǎn)是包含無序且唯一的元素。與其他數(shù)據(jù)結(jié)構(gòu)相比,集合的主要特性是元素的不重復(fù)性。set_example1={1,2,3}set_example2=set([1,2,3])創(chuàng)建集合:使用大括號(hào){}或set()函數(shù)2.3數(shù)據(jù)結(jié)構(gòu)集合:獨(dú)特元素的集合與推導(dǎo)式用途方法說明示例增加元素add(object)向集合內(nèi)增加一個(gè)元素In:a={1,2,3}In:a.add(4)In:aOut:{1,2,3,4}移除所有元素clear()移除集合內(nèi)的所有元素In:a={1,2,3}In:a.clear()In:aOut:set()復(fù)制集合copy()復(fù)制一個(gè)集合In:a={1,2,3}In:b=a.copy()In:bOut:{1,2,3}集合操作:集合不支持通過索引或鍵訪問單個(gè)元素,但適用于執(zhí)行集合間的比較和組合操作。2.3數(shù)據(jù)結(jié)構(gòu)集合:獨(dú)特元素的集合與推導(dǎo)式用途方法說明示例增加元素add(object)向集合內(nèi)增加一個(gè)元素In:a={1,2,3}In:a.add(4)In:aOut:{1,2,3,4}移除所有元素clear()移除集合內(nèi)的所有元素In:a={1,2,3}In:a.clear()In:aOut:set()復(fù)制集合copy()復(fù)制一個(gè)集合In:a={1,2,3}In:b=a.copy()In:bOut:{1,2,3}集合操作:集合不支持通過索引或鍵訪問單個(gè)元素,但適用于執(zhí)行集合間的比較和組合操作。2.3數(shù)據(jù)結(jié)構(gòu)集合:獨(dú)特元素的集合與推導(dǎo)式用途方法說明示例查找集合差異元素difference(set)查找兩個(gè)集合的差異元素In:a={1,2,3}In:b={1,2}In:a.difference(b)Out:3刪除相同元素difference_update(set)從一個(gè)集合上刪除兩個(gè)集合中的相同的元素In:a={1,2,3}In:b={2,4}In:a.difference_update(b)In:aOut:{1,3}刪除元素discard(object)刪除集合中的元素In:a={1,2,3}In:a.discard(2)In:aOut:{1,3}集合操作:集合不支持通過索引或鍵訪問單個(gè)元素,但適用于執(zhí)行集合間的比較和組合操作。2.3數(shù)據(jù)結(jié)構(gòu)集合:獨(dú)特元素的集合與推導(dǎo)式用途方法說明示例取交集intersection(set)取兩個(gè)集合交集In:a={1,2,3}In:b={2,4}In:ersection(b)Out:{2}刪除不同元素intersection_update(set)從一個(gè)集合上刪除兩個(gè)集合中的不相同的元素In:a={1,2,3}In:b={2,4}In:ersection_update(b)Out:{2}刪除元素remove(object)元素必須在集合中In:a={1,2,3}In:a.remove(1)In:aOut:{2,3}集合操作:集合不支持通過索引或鍵訪問單個(gè)元素,但適用于執(zhí)行集合間的比較和組合操作。2.3數(shù)據(jù)結(jié)構(gòu)集合:獨(dú)特元素的集合與推導(dǎo)式用途方法說明示例取不重復(fù)集合symmetric_difference()返回兩個(gè)集合中不重復(fù)的元素的集合In:a={1,2,3}In:b={2,4}In:a.symmetric_difference(b)Out:{1,3,4}刪除重復(fù)元素并添加不重復(fù)元素symmetric_difference_update()刪除兩個(gè)集合中重復(fù)元素并將不重復(fù)元素添加到集合In:a={1,2,3}In:b={2,4}In:a.symmetric_difference_update(b)In:aOut:{1,3,4}集合操作:集合不支持通過索引或鍵訪問單個(gè)元素,但適用于執(zhí)行集合間的比較和組合操作。2.3數(shù)據(jù)結(jié)構(gòu)集合:獨(dú)特元素的集合與推導(dǎo)式用途方法說明示例取并集union(set)取兩個(gè)集合的并集In:a={1,2,3}In:b={2,4}In:a.union(b)Out:{1,2,3,4}添加集合update(set)向一個(gè)集合中添加另一個(gè)集合In:a={1,2,3}In:b={2,4}In:a.update(b)In:aOut:{1,2,3,4}集合操作:集合不支持通過索引或鍵訪問單個(gè)元素,但適用于執(zhí)行集合間的比較和組合操作。2.3數(shù)據(jù)結(jié)構(gòu)集合:獨(dú)特元素的集合與推導(dǎo)式集合推導(dǎo)式的語法類似于列表推導(dǎo)式。例如:a={iforiinrange(5)}#a的值為{0,1,2,3,4}2.3數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換與判斷判斷數(shù)據(jù)結(jié)構(gòu)可使用type或isinstance方法。(1)type(object)直接返回對(duì)象的類型。(2)isinstance(object,class_or_tuple)判斷對(duì)象是否為指定類型或元組中的類型,返回布爾值。數(shù)據(jù)結(jié)構(gòu)的判斷方法2.3數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換與判斷列表和元組之間的轉(zhuǎn)換直接使用list或tuple函數(shù)。例如,定義列表a=['1','2','3'],使用tuple(a)可轉(zhuǎn)換為元組('1','2','3')。列表和數(shù)組轉(zhuǎn)換列表和元組可直接使用set函數(shù)轉(zhuǎn)換為集合。例如,定義元組a=('1','2','1'),使用set(a)轉(zhuǎn)換為集合得到{'1','2'}。注意:在轉(zhuǎn)換過程中,集合會(huì)去除重復(fù)的元素。列表、元組和集合的轉(zhuǎn)換2.4條件與判斷單層條件判斷:if語句的應(yīng)用嵌套條件判斷:多層if語句的構(gòu)建邏輯操作:and、or的靈活運(yùn)用多條件比較:鏈?zhǔn)奖容^、all和any的技巧條件的賦值:基于條件表達(dá)式的變量更新2.4條件與判斷單層條件判斷:if語句的應(yīng)用單層條件判斷使用if語句實(shí)現(xiàn)。初始條件使用if定義,中間的條件用elif(如果存在),最后的默認(rèn)情形使用else。這種結(jié)構(gòu)適用于簡單的邏輯分支。a=1#定義一個(gè)變量對(duì)象ifa==0:#判斷a是否為0,如果條件為真(為真的情況下返回結(jié)果True)

print('a=0')#打印a=0else:#如果a不為0print('a!=0')#打印a!=02.4條件與判斷嵌套條件判斷:多層if語句的構(gòu)建復(fù)雜邏輯可能需要嵌套條件判斷。在任何if、elif或else塊內(nèi),都可以包含另一個(gè)if條件判斷。這樣可以處理更復(fù)雜的情況。示例如下:a=1#定義了一個(gè)變量對(duì)象a=1ifa==0:#判斷a是否為0,如果條件為真(為真的情況下返回結(jié)果True)

print('a=0')#打印a=0elifa>0:#判斷a是否大于0,如果條件為真

ifa<=5:#判斷a是否小于等于5,如果條件為真

print('a>0且a<=5')#打印a>0且a<=5else:#判斷a大于5,如果條件為真

print('a>5')#打印a>5else:#其他情況下

print('a<0')#打印a<02.4條件與判斷邏輯操作:and、or的靈活運(yùn)用在條件判斷中,可以使用and和or來組合多個(gè)條件。and要求所有條件同時(shí)滿足,or只需任一條件滿足。例如,將條件“a>0”和“a<=5”結(jié)合,可以寫成:a=1#定義了一個(gè)變量對(duì)象a=1ifa==0:#判斷a是否為0,如果條件為真(為真的情況下返回結(jié)果True)

print('a=0')#打印a=0elifa>0anda<=5:#判斷a大于0且a小于等于5,如果條件為真

print('a>0且a<=5')#打印a>0且a<=5elifa>5:#判斷a大于5,如果條件為真

print('a>5')#打印a>5else:#其他情況下

print('a<0')#打印a<02.4條件與判斷多條件比較:鏈?zhǔn)奖容^、all和any的技巧鏈?zhǔn)奖容^鏈?zhǔn)奖容^允許進(jìn)行一系列的比較操作。例如:表達(dá)式a>0anda<=5可以被簡化為0<a<=52.4條件與判斷多條件比較:鏈?zhǔn)奖容^、all和any的技巧all和any的應(yīng)用當(dāng)涉及多個(gè)條件判斷時(shí),使用多個(gè)and或or可能顯得冗長。此時(shí),all和any函數(shù)提供了更簡潔的解決方案:(1)all:當(dāng)所有條件都為真時(shí)返回True,否則返回False。例如,all((a>0,b<2,c==8))檢查所有條件是否同時(shí)滿足。(2)any:只要有一個(gè)條件為真即返回True,全部為假時(shí)返回False。例如,any((a>0,b<2,c==8))檢查是否至少有一個(gè)條件滿足。2.4條件與判斷條件的賦值:基于條件表達(dá)式的變量更新條件賦值是一種在賦值過程中同時(shí)進(jìn)行條件判斷的方法,適用于賦值邏輯較為復(fù)雜的情況。它使用條件表達(dá)式(三元運(yùn)算符)來決定賦值內(nèi)容。例如:a=1#創(chuàng)建變量a=1b=aifa>1else0#根據(jù)a的值做判斷,當(dāng)a>1時(shí)為b賦值1;否則b賦值02.5循環(huán)與控制流程for循環(huán)與條件表達(dá)式的搭配while循環(huán)與條件的判斷循環(huán)嵌套:處理復(fù)雜問題無限循環(huán):正確使用與避免死循環(huán)控制循環(huán):break和continue的使用2.5循環(huán)與控制流程for循環(huán)與條件表達(dá)式的搭配for循環(huán)用于遍歷序列對(duì)象,如列表、元組、字典等。例如:foriin[1,2,3]:#從列表[1,2,3]中循環(huán)取出每個(gè)值print(i)#打印輸出對(duì)應(yīng)值for循環(huán)經(jīng)常與條件表達(dá)式結(jié)合使用以實(shí)現(xiàn)復(fù)雜功能。例如:foriin[1,2,3]:#從列表[1,2,3]中循環(huán)取出每個(gè)值

ifi<=2:#新增了對(duì)i的判斷,當(dāng)i<=2時(shí)執(zhí)行下面的代碼

print(i)#打印輸出對(duì)應(yīng)值2.5循環(huán)與控制流程while循環(huán)與條件的判斷while循環(huán)基于條件來控制循環(huán)的執(zhí)行。與for循環(huán)不同,它不直接迭代序列對(duì)象。例如:i=1#定義變量對(duì)象1whilei<=2:#使用while循環(huán)對(duì)i做判斷,只有當(dāng)i<=2時(shí)才執(zhí)行下面的程序print("Good")#打印輸出Goodi+=1#對(duì)i增加1,表達(dá)式也可以寫為i=i+12.5循環(huán)與控制流程循環(huán)嵌套:處理復(fù)雜問題循環(huán)可嵌套使用,適合處理多層迭代對(duì)象。例如:nums=[[11],[21,22]]#定義了一個(gè)嵌套列表foriinnums:#外層循環(huán),每次讀取nums的一個(gè)元素(列表)為iforjini:#內(nèi)層循環(huán),讀取i中的每個(gè)元素

print(j)#打印i中的每個(gè)元素2.5循環(huán)與控制流程無限循環(huán):正確使用與避免死循環(huán)while循環(huán)可用于創(chuàng)建無限循環(huán),適用于需要持續(xù)運(yùn)行的任務(wù)。例如:whileTrue:#while后面的條件為True,意味著每次循環(huán)都會(huì)調(diào)用后面的代碼

do_something_here#do_something_here為具體實(shí)現(xiàn)邏輯注意無限循環(huán)應(yīng)謹(jǐn)慎使用,以防陷入沒有退出條件的死循環(huán)。通常,應(yīng)在while循環(huán)中設(shè)置明確的退出條件,以保證循環(huán)在滿足特定情況時(shí)能夠終止。這些條件可能包括達(dá)到某個(gè)數(shù)值閾值、找到特定字符串,或者滿足特定狀態(tài)等。2.5循環(huán)與控制流程控制循環(huán):break和continue的使用根據(jù)特定條件來控制循環(huán)的繼續(xù)或終止的兩種方式:break和continueforiin[1,2,3,4]:#從列表[1,2,3,4]循環(huán)讀取iifi<2:#判斷當(dāng)i<3結(jié)果為真時(shí),執(zhí)行下面代碼print(i)#打印輸出ielifi==2:#判斷當(dāng)i為3結(jié)果為真時(shí),執(zhí)行下面代碼continue#略過此次循環(huán),繼續(xù)下一個(gè)循環(huán)操作else:#在其他情況下break#意味著終止整個(gè)循環(huán)不再繼續(xù)執(zhí)行break用于徹底結(jié)束整個(gè)循環(huán)過程并退出循環(huán)體continue則用于僅結(jié)束當(dāng)前的循環(huán)迭代,隨后繼續(xù)執(zhí)行循環(huán)的剩余部分2.6運(yùn)算符算術(shù)運(yùn)算符:數(shù)字計(jì)算的基礎(chǔ)賦值運(yùn)算符:簡化變量賦值比較運(yùn)算符:衡量數(shù)據(jù)大小邏輯運(yùn)算符:處理復(fù)雜判斷成員與身份:檢驗(yàn)元素存在性和對(duì)象身份運(yùn)算優(yōu)先級(jí):理解運(yùn)算次序2.6運(yùn)算符算術(shù)運(yùn)算符:數(shù)字計(jì)算的基礎(chǔ)運(yùn)算符名稱用途示例+加兩個(gè)數(shù)字對(duì)象為相加;兩個(gè)字符串對(duì)象為組合。In:'a'+'b'Out:'ab'-減用于單數(shù)字前面代表負(fù)數(shù);兩個(gè)數(shù)字對(duì)象表示相減。In:1–2Out:-1*乘兩個(gè)數(shù)字對(duì)象相乘;單個(gè)對(duì)象重復(fù)多次。In:'a'*3Out:'aaa'/除兩個(gè)數(shù)字對(duì)象相除In:1/2Out:0.5%取余返回除法的余數(shù),也叫模運(yùn)算In:1/2Out:1**冪運(yùn)算返回x的y次冪In:2**4Out:16//取整返回除數(shù)向下取整的整數(shù)In:1//2Out:02.6運(yùn)算符賦值運(yùn)算符:簡化變量賦值運(yùn)算符名稱用途示例=簡單賦值最簡單的賦值方法In:c=a+bIn:cOut:3+=加法賦值將一個(gè)對(duì)象加一個(gè)數(shù)字后再賦值In:a+=2#等價(jià)于a=a+2In:aOut:4-=減法賦值將一個(gè)對(duì)象減去一個(gè)數(shù)字后再賦值In:a-=2#等價(jià)于a=a-2In:aOut:0*=乘法賦值將一個(gè)對(duì)象乘一個(gè)數(shù)字后再賦值In:a*=2#等價(jià)于a=a*2In:aOut:42.6運(yùn)算符賦值運(yùn)算符:簡化變量賦值運(yùn)算符名稱用途示例/=除法賦值將一個(gè)對(duì)象除一個(gè)數(shù)字后再賦值In:a/=2#等價(jià)于a=a/2In:aOut:1.0**=冪賦值將一個(gè)對(duì)象冪運(yùn)算一個(gè)數(shù)字后再賦值In:a**=2#等價(jià)于a=a**2In:aOut:4//=取整賦值將一個(gè)對(duì)象取整賦值一個(gè)數(shù)字后再賦值In:a//=2#等價(jià)于a=a//2In:aOut:12.6運(yùn)算符比較運(yùn)算符:衡量數(shù)據(jù)大小運(yùn)算符名稱用途示例==等于比較兩個(gè)對(duì)象是否相等In:a==bOut:False!=不等于比較兩個(gè)對(duì)象是否不相等In:a!=bOut:True>和>=大于或大于等于比較a是否大于或大于等于In:a>=bOut:True<和<=小于或小于等于比較a是否小于或小于等于bIn:a<=bOut:False2.6運(yùn)算符邏輯運(yùn)算符:處理復(fù)雜判斷運(yùn)算符名稱用途示例not非返回相反的邏輯值In:not(a==b)Out:Trueand且a和b同時(shí)為真的情況下返回True,否則為FalseIn:a==2andb==1Out:Trueor或a和b有一個(gè)為真的情況下返回True,否則為FalseIn:a==2orb==2Out:True2.6運(yùn)算符成員與身份:檢驗(yàn)元素存在性和對(duì)象身份運(yùn)算符名稱用途示例in在..中是否在指定序列對(duì)象中找到對(duì)象In:ainbOut:Truenotin不在…中是否在指定序列對(duì)象中找不到對(duì)象In:anotinbOut:False運(yùn)算符名稱用途示例is是比較兩個(gè)對(duì)象是否指向同一個(gè)存儲(chǔ)對(duì)象In:aisbOut:Falseisnot不是比較兩個(gè)對(duì)象是否指向不同的存儲(chǔ)對(duì)象In:aisnotbOut:True2.6運(yùn)算符運(yùn)算優(yōu)先級(jí):理解運(yùn)算次序(1)算術(shù)運(yùn)算符:冪運(yùn)算符**(2)算術(shù)運(yùn)算符:乘*、除/、取余%、取整//(3)算術(shù)運(yùn)算符:加法+、減法-(4)比較運(yùn)算符:小于等于<=、小于<、大于>、大于等于>=(5)比較運(yùn)算符:等于==、不等于!=(6)賦值運(yùn)算符:等于=、加等于+=、減等于-=、乘等于*=、除等于/=、冪等于**=、取整等于//=(7)身份運(yùn)算符:是is、不是isnot(8)成員運(yùn)算符:在in、不在notin(9)邏輯運(yùn)算符:非not、且and、或or。除位運(yùn)算符外,按優(yōu)先級(jí)由高至低排列的運(yùn)算符:2.7文本處理與正則表達(dá)式字符串格式化:控制信息輸出字符串執(zhí)行:動(dòng)態(tài)生成與執(zhí)行代碼內(nèi)置方法:處理字符串的常見操作正則表達(dá)式:強(qiáng)大的模式匹配工具2.7文本處理與正則表達(dá)式字符串格式化:控制信息輸出字符串格式化的三種格式化方法:使用%格式化字符串使用str.format()格式化字符串使用f-strings格式化字符串2.7文本處理與正則表達(dá)式字符串格式化:控制信息輸出使用%格式化字符串通過“format%values”的格式傳值?!癴ormat”是包含%規(guī)則的字符串“values”是待插入的值。2.7文本處理與正則表達(dá)式字符串格式化:控制信息輸出使用%格式化字符串print(‘mynameis%s,age%d,height%.2f,money%5.2e,satisfied%.2f%%’%(‘lucy’,33,183.5,1000000000.0,90.365))#打印輸出mynameislucy,age33,height183.50,money1.00e+09,satisfied90.36%符號(hào)用途%s格式化為字符串%d格式化為整數(shù)%f格式化為浮點(diǎn)數(shù)%e格式化為科學(xué)計(jì)數(shù)法來表示浮點(diǎn)數(shù)%%格式化為百分號(hào)2.7文本處理與正則表達(dá)式字符串格式化:控制信息輸出使用str.format()格式化字符串str.format方法通過在字符串中插入{}作為占位符,并結(jié)合str.format(values)中的值進(jìn)行格式化。三種傳參方式:位置索引傳參默認(rèn)位置傳參關(guān)鍵字傳參2.7文本處理與正則表達(dá)式字符串格式化:控制信息輸出使用str.format()格式化字符串print('mynameis{name},age{age},height{height:.2f},money{money:5.2e},satisfied{percent:.2%}'.format(name='lucy',age=33,height=183.5,money=10000000.0,percent=0.90365))#輸出結(jié)果:mynameislucy,age33,height183.50,money1.00e+07,satisfied90.36%示例:2.7文本處理與正則表達(dá)式字符串格式化:控制信息輸出使用f-strings格式化字符串F-string方法允許在字符串前添加f字符以便在{}內(nèi)直接插入變量。示例:name='lucy'#定義name變量age=33#定義age變量height=183.5#定義height變量money=10000000.0#定義money變量percent=0.90365#定義percent變量print(f'mynameis{name},age{age},height{height:.2f},money{money:5.2e},satisfied{percent:.2%}')#在字符串前的f表示這是一個(gè)f-strings對(duì)象,然后在{}中傳入?yún)?shù)即可2.7文本處理與正則表達(dá)式字符串執(zhí)行:動(dòng)態(tài)生成與執(zhí)行代碼eval執(zhí)行字符串表達(dá)式c,d='1+2','1==2'#定義了一個(gè)兩個(gè)字符串變量對(duì)象c和dprint(eval(c))#調(diào)用eval方法解析字符串表達(dá)式c,并打印輸出結(jié)果為3print(eval(d))#調(diào)用eval方法解析字符串表達(dá)式d,并打印輸出結(jié)果為False示例:2.7文本處理與正則表達(dá)式字符串執(zhí)行:動(dòng)態(tài)生成與執(zhí)行代碼compile編譯執(zhí)行復(fù)雜功能com_strs='''#定義了一個(gè)字符串對(duì)象com_strsi=1#定義了變量i為1ifi>0:#判斷i是否大于0,如果為真則執(zhí)行下面的過程print("Good")#打印輸出Good'''com_str=compile(com_strs,'','exec')#使用compile方法將該字符串進(jìn)行編譯exec(com_str)#使用exec方法執(zhí)行編譯好的對(duì)象,執(zhí)行后得到結(jié)果為Good示例:2.7文本處理與正則表達(dá)式內(nèi)置方法:處理字符串的常見操作獲取字符串子集print(s[:4])#獲取前4個(gè)字符串,代碼返回thisprint(s[5:8])#獲取第6到第8個(gè)字符,代碼返回isprint(s[-8:])#獲取最后8個(gè)字符串,代碼返回python!示例:2.7文本處理與正則表達(dá)式內(nèi)置方法:處理字符串的常見操作拼接與拆分字符串print(s+'a')#拼接字符串s和'a',代碼返回thisispython!aprint(''.join([s,'b']))#拼接列表,代碼返回thisispython!bprint(s.split())#默認(rèn)按空格分隔,默認(rèn)去除所有的空格,代碼返回拆分后的列表['this','is','python!']print(s.split(''))#按指定字符空格分割字符串,代碼返回拆分后的列表['this','is','python!',''],注意列表中包含空字符串不會(huì)默認(rèn)去除示例:2.7文本處理與正則表達(dá)式內(nèi)置方法:處理字符串的常見操作大小寫處理print(s.upper())#字符串全部大寫,代碼返回THISISPYTHON!print(s.lower())#字符串全部小寫,代碼返回thisispython!print(s.swapcase())#字符串大小寫互換,代碼返回THISISPYTHON!print(s.capitalize())#字符串首字母大寫,其余小寫,代碼返回Thisispython!print(s.title())#字符串首字母大寫,代碼返回ThisIsPython!示例:2.7文本處理與正則表達(dá)式內(nèi)置方法:處理字符串的常見操作搜索和替換print(s.find('is'))#搜索字符串is,沒有返回-1,代碼返回為2print(s.find('is',1,2))#從字符串的對(duì)應(yīng)索引的[1:2]子集中查找is,代碼返回-1print(s.count('is'))#統(tǒng)計(jì)字符串is出現(xiàn)的次數(shù),代碼返回2print(s.rfind('is'))#從右邊開始查找is,代碼返回5print(s.replace('python','python3'))#用python3替換python,代碼返回thisispython3!print(s.replace('python','python3',1))#功能返回結(jié)果同上,指定只替換1次示例:2.7文本處理與正則表達(dá)式內(nèi)置方法:處理字符串的常見操作去除空格print(s.strip())#只去除兩邊空格,代碼返回結(jié)果thisispython!print(s.lstrip())#只去除左邊空格,代碼返回結(jié)果thisispython!print(s.rstrip())#只去除右邊空格,代碼返回結(jié)果thisispython!print(s.replace('',''))#通過替換方法去除所有的空格,代碼返回結(jié)果thisispython!示例:2.7文本處理與正則表達(dá)式內(nèi)置方法:處理字符串的常見操作字符串判斷print(s.startswith('python'))#是否以'python'開頭,代碼返回結(jié)果Falseprint(s.endswith(''))#是否以空格結(jié)尾,代碼返回結(jié)果Trueprint(s.isalnum())#是否全為字母或數(shù)字,代碼返回結(jié)果Falseprint(s.isalpha())#是否全為字母,代碼返回結(jié)果Falseprint(s.isdigit())#是否全為數(shù)字,數(shù)字的范圍包括Unicode數(shù)字、byte數(shù)字(單字節(jié))、全角數(shù)字(雙字節(jié)),代碼返回結(jié)果Falseprint(s.isdecimal())#是否全為數(shù)字,數(shù)字的范圍包括Unicode數(shù)字、全角數(shù)字(雙字節(jié)),代碼返回結(jié)果Falseprint(s.isnumeric())#是否全為數(shù)字,數(shù)字的范圍包括Unicode數(shù)字、全角數(shù)字(雙字節(jié))、羅馬數(shù)字、漢字?jǐn)?shù)字,代碼返回結(jié)果Falseprint(s.islower())#是否全為小寫,代碼返回結(jié)果Trueprint(s.isupper())#是否全為大寫,代碼返回結(jié)果Falseprint(s.istitle())#判斷首字母是否為大寫,代碼返回結(jié)果Falseprint(s.isspace())#判斷字符是否為空格,代碼返回結(jié)果False示例:2.7文本處理與正則表達(dá)式正則表達(dá)式:強(qiáng)大的模式匹配工具正則表達(dá)式的語法規(guī)則:匹配對(duì)象規(guī)則運(yùn)算符說明示例.表示任意字符對(duì)象'pyt.on'表示pyt和on中間可以有任意一個(gè)字符,因此'python'能匹配到該模式\表示轉(zhuǎn)義字符,將正則表達(dá)式中的特殊符號(hào)轉(zhuǎn)義為普通字符'pyt\.on'表示模式本身就是'pyt.on',其中的.不再表示任意字符對(duì)象[]表示字符規(guī)則的集合'[0-3]'表示規(guī)則包含從0-3共4個(gè)數(shù)字\d固定用法,表示任意十進(jìn)制數(shù)字'\d',相當(dāng)于[0-9]\D固定用法,表示任意非數(shù)字字符'\D',相當(dāng)于[^0-9]\s固定用法,表示任意空白字符'\D',相當(dāng)于[\t\n\r\f\v]\S固定用法,表示任意非空白字符'\D',相當(dāng)于[^\t\n\r\f\v]\w固定用法,表示任意數(shù)字和字母'\w',相當(dāng)于[a-zA-Z0-9]\W固定用法,表示任意非數(shù)字和字母'\W',相當(dāng)于[^a-zA-Z0-9]2.7文本處理與正則表達(dá)式正則表達(dá)式:強(qiáng)大的模式匹配工具正則表達(dá)式的語法規(guī)則:匹配次數(shù)規(guī)則運(yùn)算符說明示例*表示匹配前一個(gè)字符0到無限次'.*'表示任意字符出現(xiàn)無限次+表示匹配前一個(gè)字符1到無限次'\d+'表示任意數(shù)字出現(xiàn)1到無限次?表示匹配前一個(gè)字符0到1次'\D?'表示任意非數(shù)字出現(xiàn)0到1次{m}表示匹配前一個(gè)字符m次'\w{2}'表示任意數(shù)字和字母出現(xiàn)2次{m,n}表示匹配前一個(gè)字符m到n次'\W{2,5}'表示任意非數(shù)字和字母出現(xiàn)2到5次2.7文本處理與正則表達(dá)式正則表達(dá)式:強(qiáng)大的模式匹配工具正則表達(dá)式的語法規(guī)則:匹配模式規(guī)則運(yùn)算符說明示例^表示字符串匹配開頭規(guī)則'^py'表示字符串以py開頭,因此'python'能匹配到該模式$表示字符串匹配結(jié)尾規(guī)則'on$'表示字符串以on結(jié)尾,因此'python'能匹配到該模式|表示多個(gè)規(guī)則中只要匹配一個(gè)規(guī)則即可'[!|,]'表示規(guī)則包括感嘆號(hào)和逗號(hào),匹配任意一個(gè)字符即可2.7文本處理與正則表達(dá)式正則表達(dá)式:強(qiáng)大的模式匹配工具使用re.match返回匹配群組re.match函數(shù)用于根據(jù)指定模式返回匹配的群組對(duì)象。示例:importrea="ID12high90345cd520190330"#定義一個(gè)字符串re_match=re.match('^ID(\d+)(\D*)(\d*)(\w{3})(\d{8})',a)#建立匹配模式print(re_match.groups())#打印被匹配的字符串群組,結(jié)果為('12','high','90345','cd5','20190330')print(re_match.groups()[1])#打印群組中的特定對(duì)象,結(jié)果為high2.7文本處理與正則表達(dá)式正則表達(dá)式:強(qiáng)大的模式匹配工具使用re.findall返回匹配列表re.findall函數(shù)用于查找符合特定規(guī)則的字符串,并以列表形式返回。示例:importrea="ID12high90345cd520190330"#字符串中包含數(shù)字和字母print(re.findall('\d+',a))#打印匹配出現(xiàn)1或無限次的數(shù)字,結(jié)果為['12','90345','520190330']print(re.findall('\d{2,3}',a))#打印匹配限制在出現(xiàn)2到3次的數(shù)字,結(jié)果為['12','903','45','520','190','330']2.7文本處理與正則表達(dá)式正則表達(dá)式:強(qiáng)大的模式匹配工具使用re.split拆分字符串與字符串的split方法只能針對(duì)單一分隔符不同,正則表達(dá)式re.split可以指定多種分隔符進(jìn)行拆分。importre#導(dǎo)入re庫strs='thisis!a,string'#定義一個(gè)字符串,分隔符包括空格、感嘆號(hào)、逗號(hào)re.split('[|!|,]',strs)#使用正則表達(dá)式寫出三個(gè)分隔符規(guī)則,分別是空格、感嘆號(hào)和逗號(hào),代碼執(zhí)行后返回結(jié)果為['this','is','a','string']2.7文本處理與正則表達(dá)式正則表達(dá)式:強(qiáng)大的模式匹配工具使用re.sub替換字符串盡管字符串的replace方法能進(jìn)行替換操作,但它僅限于固定對(duì)象的替換。正則表達(dá)式則可以實(shí)現(xiàn)基于規(guī)則的替換。importre#導(dǎo)入re庫strs='this11_is12,python3!'#定義一個(gè)字符串,包括空格、數(shù)字、英文print(re.sub('\d{2}|,|_','',strs))#將2位數(shù)字、逗號(hào)和_替換為空格,打印結(jié)果為thisispython3!print(re.sub('\D{4,10}','A',strs))#將長度為4-10的非數(shù)字字符串替換為A,打印結(jié)果為A11_is12A3!2.8功能的模塊化封裝函數(shù)的威力:便于重用與可維護(hù)匿名函數(shù):簡潔的功能定義方式類的構(gòu)建:面向?qū)ο缶幊痰幕A(chǔ)2.8功能的模塊化封裝函數(shù)的威力:便于重用與可維護(hù)函數(shù)要素:函數(shù)名、參數(shù)、功能體和返回值等deffunction_name(argument_list):#使用def方法定義,function_name是函數(shù)名;括號(hào)內(nèi)的argument_list是參數(shù)列表,多個(gè)參數(shù)以逗號(hào)分隔expression#expression是函數(shù)功能主體returnexpression#expression為函數(shù)可返回的結(jié)果,其中expression可以是一個(gè)變量對(duì)象,也可以是一個(gè)表達(dá)式,也可以為空定義模式2.8功能的模塊化封裝函數(shù)的威力:便于重用與可維護(hù)函數(shù)要素:函數(shù)名、參數(shù)、功能體和返回值等defagg_sum(x,y,z=5):#定義一個(gè)名為agg_sum的函數(shù),z=5表示z如果沒有傳值,則默認(rèn)為5'''該功能實(shí)現(xiàn)了兩個(gè)數(shù)字求和'''#函數(shù)的文檔字符串(DocStrings),它用來做函數(shù)的功能、參數(shù)、實(shí)現(xiàn)、返回、錯(cuò)誤、注意事項(xiàng)和示例等做詳細(xì)說明sum=x+y+z#常規(guī)功能,實(shí)現(xiàn)了對(duì)3個(gè)數(shù)求和returnsum#使用return方法將計(jì)算結(jié)果sum返回,return不是必須的,但作為一個(gè)被調(diào)用的功能模塊,一般都會(huì)返回特定結(jié)果定義示例2.8功能的模塊化封裝函數(shù)的威力:便于重用與可維護(hù)函數(shù)要素:函數(shù)名、參數(shù)、功能體和返回值等print(agg_sum(10,20))#將10和20分別傳給agg_sum函數(shù),計(jì)算結(jié)果為35print(agg_sum(10,20,z=10))#將10和20是通過位置默認(rèn)傳給x和y,而z=10則通過關(guān)鍵字的方式傳參,z=10也可以直接寫10,通過位置的方式傳參,計(jì)算結(jié)果為50調(diào)用方式2.8功能的模塊化封裝匿名函數(shù):簡潔的功能定義方式匿名函數(shù)要素:單行表達(dá)式。lambdaargument_list:expression。定義模式關(guān)鍵字lambda后跟參數(shù)列表argument_list,參數(shù)間用逗號(hào)分隔;冒號(hào)之后的expression部分則是函數(shù)的實(shí)際操作2.8功能的模塊化封裝匿名函數(shù):簡潔的功能定義方式匿名函數(shù)要素:單行表達(dá)式。agg_sum=lambdax,y,z:x+y+z#定義了一個(gè)基于lambda的的功能表達(dá)式agg_sum,表達(dá)式的參數(shù)為x、y、z,這三個(gè)參數(shù)實(shí)現(xiàn)的邏輯是x+y+z定義示例2.8功能的模塊化封裝匿名函數(shù):簡潔的功能定義方式匿名函數(shù)要素:單行表達(dá)式。print(agg_sum(10,20,10))#調(diào)用該表達(dá)式并賦值為10、20、10給x、y、z,然后打印輸出結(jié)果為40使用方式2.8功能的模塊化封裝類的構(gòu)建:面向?qū)ο缶幊痰幕A(chǔ)類函數(shù)要素:類名、初始化方法(構(gòu)造函數(shù))、屬性和方法等。classclass_name:#類使用class方法定義,后面的class_name為類的名稱def__init__(self,argument_list):#使用函數(shù)定義方法,定義一個(gè)初始化的函數(shù),其中的__init__為固定名稱不可更改,self為固定參數(shù)且必須在第一個(gè)位置,后續(xù)所有的方法都可以通過self獲取,argument_list為其他該類用到的參數(shù)列表,參數(shù)以逗號(hào)分隔expression#一般是賦值表達(dá)式,用于初始化不同的變量值defmethod(self):#普通函數(shù)的定義方式,但self參數(shù)是固定的expression#普通函數(shù)的功能封裝returnexpression#普通函數(shù)的返回對(duì)象定義模式2.8功能的模塊化封裝類的構(gòu)建:面向?qū)ο缶幊痰幕A(chǔ)定義示例classUser:#定義名為User的類def__init__(self,name,score):#初始化函數(shù)中,包含name、score2個(gè)參數(shù)(self參數(shù)為類實(shí)例本身),該類內(nèi)的方法都可以獲取該初始化函數(shù)中實(shí)例化后的值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論