【整整600集】頂級(jí)大學(xué)196小時(shí)講完的Python教程(數(shù)據(jù)分析)全程干貨無(wú)廢

P9-P91
常用快捷鍵:1.多行注釋?zhuān)哼x中多行,Ctrl+/,已有注釋則取消注釋?zhuān)?.撤回上一步:Ctrl+Z;3.還原上一步:Ctrl+Shift+Z
其他:可以自設(shè)pycharm語(yǔ)言;可以設(shè)置輸入法中文時(shí)使用英文字符;字符串和代表其的變量是等效的;字符:str??{字典}:dict??{元組}:tuple??[列表]:list??整數(shù):int??小數(shù):float;現(xiàn)代計(jì)算機(jī)中,一般“定點(diǎn)數(shù)”就是整數(shù),“浮點(diǎn)數(shù)”含小數(shù)部分
?
P9基礎(chǔ)語(yǔ)法1
1.縮進(jìn):四個(gè)空格/一個(gè)tab
2.單行語(yǔ)句變多行語(yǔ)句,句末會(huì)多“/”;但是括號(hào)內(nèi)的多行語(yǔ)句不需要
?
P10基礎(chǔ)語(yǔ)法2
1.?雙引號(hào)/單引號(hào)內(nèi)存放字符串,三對(duì)雙引號(hào)內(nèi)存放多行字符串
2.?#注釋?zhuān)粫?huì)被運(yùn)行
3.?空格和空行不是必須存在,是為了美化
?
P12轉(zhuǎn)義符
轉(zhuǎn)義符:\+特異功能的首字母
1.?\n:換行
2.?\t:制表符,代表四個(gè)空格的位置(4個(gè)4個(gè)一節(jié),若前面是五個(gè)字符,則補(bǔ)齊三個(gè)空格)
3.?\r覆蓋,后面的字符覆蓋前面的字符
4.?\b刪除(bckspace)刪除前一個(gè)字
5.?\:兩個(gè)反斜線(xiàn)表示一個(gè)\
6.?原字符:使轉(zhuǎn)義字符不起作用,寫(xiě)在整個(gè)字符串前面,用r或R
?
P13變量
1.?變量命名規(guī)則:
*變量名只能是字母,數(shù)字和下劃線(xiàn)的任意組合
*變量名第一個(gè)字符不能是數(shù)字
*變量名區(qū)分大小寫(xiě),大小寫(xiě)字幕被認(rèn)為是兩個(gè)不同的字符
*特殊關(guān)鍵字不能命名為變量名
2.?變量賦值
3.?多個(gè)變量賦值
4.?常量,用大寫(xiě)命名
?
P14數(shù)據(jù)類(lèi)型-數(shù)字
1.?Python3的六個(gè)標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型:Number數(shù)字,String字符串,Tuple元組,List列表,Set集合,Dictionary字典;其中前三個(gè)為不可變數(shù)據(jù),后三個(gè)為可變數(shù)據(jù)
2.?Python3支持的數(shù)字有int,float和bool
3.?整型int-整數(shù),可正可負(fù)
4.?浮點(diǎn)型float-有整數(shù)部分和小數(shù)部分
5.?布爾型bool - True False,大小寫(xiě)固定
?
P15數(shù)值運(yùn)算
1.?// 除法運(yùn)算后向下取整
2.?% 取模,得到兩數(shù)相除的余數(shù)
3.?** 冪運(yùn)算,例子:2**3=8
?
P16常見(jiàn)比較運(yùn)算符
1.?常見(jiàn)的比較運(yùn)算符號(hào):
大于等于:>=
小于等于:<=
不等于:!=
等于:==,單個(gè)=是賦值操作
2.?直接print則自動(dòng)返回布爾值 ?例:print(4>=3 返回True
3.?True=1 False=0,布爾值可以轉(zhuǎn)化為數(shù)字并用于運(yùn)算,例如1+True的形式
?
P17運(yùn)算符與或非
and 與,兩者都為T(mén)rue才輸出True,否則False
or 或,有至少一個(gè)True,則輸出True,否則False
not 非運(yùn)算,取反
?
P18空值和內(nèi)置函數(shù)的返回值
1.?python的空值 -- None 什么都沒(méi)有,不能進(jìn)行運(yùn)算,不能和字符串進(jìn)行拼接
2.?內(nèi)置函數(shù)的返回值
內(nèi)置函數(shù)即print(),可以用變量進(jìn)行接收,沒(méi)有返回值則print該變量得到None;之后學(xué)習(xí)中通過(guò)自己的設(shè)置可以使函數(shù)運(yùn)行之后有返回值
?
P19字符串-切片-1
字符串的下標(biāo)是從零開(kāi)始的
*切片
[開(kāi)始:結(jié)尾] 取左不取右
例:
a = "12345"
print(a[0:3])
>>>123
省略冒號(hào)前,則自動(dòng)從頭開(kāi)始;省略冒號(hào)后,則取到末尾
倒著取則用負(fù)數(shù),例如[-3:-1]
?
P20字符串-切片-2
*切片
[開(kāi)始:結(jié)尾:步長(zhǎng)] 取左不取右
步長(zhǎng):n ,跨n步,即n個(gè)一組,每組取第一個(gè)
[結(jié)尾:開(kāi)始:-步長(zhǎng)]即可實(shí)現(xiàn)倒序,例子[8:2:-2]
?
P21字符串-下標(biāo)取值
字符串索引/下標(biāo)
[ ]中輸入對(duì)應(yīng)字符串下標(biāo)即可取得該字符,負(fù)數(shù)則倒著取,*空格也算字符
?
P22字符串拼接
方法一:兩個(gè)字符串之間使用“+ ”,則兩個(gè)字符串合并為一個(gè)
方法爾:需要在字符之間加入諸如標(biāo)點(diǎn)符號(hào)時(shí),先定義一個(gè)字符串 “?, ”(引號(hào)內(nèi)內(nèi)容根據(jù)想要插入的內(nèi)容而定),然后“ .join((字符串0, 字符串1, 字符串2))”
?
P23字符串的格式化
在字符串內(nèi)需要添加信息的地方插入{ }(一個(gè)字符串內(nèi)可插入多個(gè)),在字符串后使用“.format(需要加入的字符串0, 需要加入的字符串1, 需要加入的字符串2)”,運(yùn)行結(jié)果默認(rèn)按順序填入
改變填入順序:加入的字符串也有下標(biāo),默認(rèn)從0開(kāi)始,在{ }內(nèi)填入相應(yīng)下標(biāo),就可以自定義插入的順序
?
P24字符串的常用方法find&count
find:查找元素位置
查找字符串片段在字符串中的下標(biāo)位置,從前往后找,返回的是第一個(gè)被找到字符串片段起始位置
字符串.find(“要查找的字符串片段”, “查找范圍起始點(diǎn)”, “查找范圍終止位置+1”) *可以只要第一個(gè)參數(shù)
*如果查找的字符串存在多個(gè),查找結(jié)果是第一個(gè)出現(xiàn)的字符串下標(biāo),找不到就返回-1
count:統(tǒng)計(jì)字符串片段,在字符串中出現(xiàn)的次數(shù),找不到返回0
字符串.count(“要統(tǒng)計(jì)的字符串片段”, “查找范圍起始點(diǎn)”, “查找范圍終止位置+1”) *可以只要第一個(gè)參數(shù)
?
P25 字符串replace&upper%lower
1.replace:替換指定的字符串片段
參數(shù)一:要替換的字符串片段
參數(shù)二:替換之后的字符串片段
參數(shù)三:替換的次數(shù),從前往后替換(默認(rèn)替換所有的)
字符串.replace( ‘?’?, ‘?’?, n )
2.upper:將小寫(xiě)字母轉(zhuǎn)為大寫(xiě)
字符串.upper( )
3.lower:將大寫(xiě)字母轉(zhuǎn)為小寫(xiě)
字符串.lower( )
?
P26 字符串split&strip
1.split:指定分割點(diǎn)對(duì)字符串進(jìn)行分割
參數(shù)一:分割點(diǎn)
參數(shù)二:分割的次數(shù),從前往后(默認(rèn)找到所有分割點(diǎn)進(jìn)行分割)
字符串.split( “分割點(diǎn)”?, “分割次數(shù)”?)
運(yùn)行結(jié)果→ ‘字符串片段1’?, ‘字符串片段2’?, ‘字符串片段3’?......列表中不含分割點(diǎn)
2.strip:去除字符串首尾的空格/字符 *該字符只在首/尾亦可使用
字符串.strip( 空格或 ‘需要去除的首尾字符’?)
*strip只能去除首尾字符串,如果想要將中間一同去除,可以使用replace( ‘想要去除的字符’?, ‘’)?????#第二個(gè)引號(hào)內(nèi)不留空格
?
P27 傳統(tǒng)的格式化輸出&F表達(dá)式
傳統(tǒng)的格式化輸出方法:%
%s:為字符占位,任意類(lèi)型都可以
%d:為數(shù)值類(lèi)型占位(如果輸入浮點(diǎn)數(shù),會(huì)自動(dòng)取整)
%f:為浮點(diǎn)數(shù)占位(定點(diǎn)數(shù)亦可),保留到小數(shù)點(diǎn)后六位
‘xxxx%sxxxx’?%(y) #新版本中不再需要括號(hào)
F表達(dá)式(f亦可)
用字符串前的f代替字符串后的format
例: ‘我的名字叫{ } , 我的年齡是{ }’.format(name , age)
→??F ‘我的名字叫{name} , 我的年齡是{age}’
?
P28 字符串format的進(jìn)階用法
len( ):計(jì)算字符串的長(zhǎng)度?#空格也占字符
format:格式化輸出(進(jìn)階)
1.?格式化小數(shù)長(zhǎng)度(會(huì)四舍五入)?:.nf?#小數(shù)點(diǎn)后n位 #如果不加f則從前往后保留n位
“字符串{對(duì)應(yīng)的字符串下標(biāo):.nf}字符串”.format(s,x)
2.?將小數(shù)按百分比的形式顯示?????:.n%?#n為百分比形式下小數(shù)點(diǎn)后n位
?
P29 定義列表
列表是寫(xiě)在[]之間、用逗號(hào)分隔開(kāi)的元素列表,列表可以完成大多數(shù)集合類(lèi)的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。列表中元素的類(lèi)型可以不相同,它支持?jǐn)?shù)字,字符串甚至可以包含列表(所謂嵌套),列表中的元素是可以改變的。
1.?定義列表
2.?列表的下標(biāo) #從0開(kāi)始
3.?列表取值??#如果想要取得列表中的列表中的某一個(gè)值,可以連續(xù)用兩個(gè)[外層下標(biāo)1][內(nèi)層下標(biāo)2] ,Ex:print(list1[5][1])
?
P30列表的長(zhǎng)度和更新列表
1.?列表的長(zhǎng)度 len( )??#獲得的是列表中元素?cái)?shù)量
2.?更新列表中的值???#直接給對(duì)應(yīng)下標(biāo)重新賦值 例:list[2]=99
?
P31 列表的加法和乘法操作
列表的加法:list1+list2 → 兩個(gè)列表元素首尾相接,合為一個(gè)列表
列表的乘法:list*n → 該列表內(nèi)元素重復(fù)n遍
#字符串*n則該字符串被重復(fù)n遍
?
P32 列表的切片取值
原理同字符串的切片(P19&20)
?
P33 列表的操作方法del&append
1.?del關(guān)鍵字?刪除
??可以刪除整個(gè)列表,也可以刪除中的指定值
??例:del a??del a[2]
2.?append方法?用于向列表末尾添加元素
??#不可以直接在print處使用,要先寫(xiě)列表a.append( ),再print列表a
?
P34列表的操作方法insert&clear
1.?insert用于向列表中插入元素
???#第一個(gè)參數(shù)是插入的位置,第二個(gè)參數(shù)是要插入的對(duì)象
2.?clear函數(shù)用于將列表清空??list.clear()?→ []?#列表括號(hào)會(huì)保留
?
P35 列表操作方法remove&pop
1.?remove函數(shù)-從列表移除元素 #參數(shù)為要移除的元素
???*執(zhí)行結(jié)果中,若列表有重復(fù)元素,則只移除第一個(gè)
2.?pop函數(shù)-移除列表中指定位置的元素,并返回要移除的元素(直接print則執(zhí)行結(jié)果為要移除的元素) #參數(shù)為要移除的元素下標(biāo)
???#默認(rèn)情況下,移除列表中的最后一個(gè)元素
?
P36 列表操作方法index&reverse
1.?index函數(shù)-用于返回所匹配的元素的索引。該函數(shù)的第一個(gè)參數(shù)是待查找的對(duì)象,第二個(gè)參數(shù)是查找的起始范圍,第三個(gè)參數(shù)是查找的結(jié)束范圍?
2.?reverse函數(shù)-用于將列表反向排列???list.reverse()和[::-1]等效
?
P37 列表操作方法extend
用于在列表的末尾添加另一個(gè)列表,與append相比,extend可以一次性添加多個(gè)元素(append會(huì)把整個(gè)列表作為一個(gè)元素加入,extend會(huì)將列表中的元素逐一加入)
*extend和加法的結(jié)果是一樣的,但是extend會(huì)將另一個(gè)列表并入當(dāng)前列表,而列表加法是返回新的列表,為節(jié)約內(nèi)存空間,更推薦使用extend來(lái)實(shí)現(xiàn)大列表的連接操作
?
P38 列表的操作方法copy
copy函數(shù)用于創(chuàng)建列表的副本?例:b = a.copy()
#copy得到的b,對(duì)列表a進(jìn)行的操作不會(huì)影響b;賦值b=a,對(duì)a的操作會(huì)影響b
?
P39 列表操作方法sort
1.?sort函數(shù)用于將列表進(jìn)行排序,排序順序遵循ascii碼,默認(rèn)升序排列
???#只有同一類(lèi)型數(shù)據(jù)才能比對(duì),ex.不能字符串和數(shù)字一起比較排序
???#降序: list.sort(reverse=True)
2.?ascii碼科普
???美國(guó)信息交換標(biāo)準(zhǔn)代碼(一種編碼標(biāo)準(zhǔn)),每個(gè)字符都有一個(gè)對(duì)應(yīng)的ascii碼可查詢(xún)
3.?常見(jiàn)ASCII碼的大小規(guī)則:0~9<A~Z<a~z
?
P40 列表操作方法count
count用于統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)
#要定義變量來(lái)接受返回值
?
P41 元組的創(chuàng)建&元組與列表的不同
元組(tuple)與列表類(lèi)似,能使用列表的地方基本上都能使用元組,不同之處在于元組的元素不能修改。元組寫(xiě)在小括號(hào)()里,元素之間用逗號(hào)隔開(kāi),組中的元素類(lèi)型也可以不相同。
?
P42 元組的加法以及元組中列表的數(shù)據(jù)更新
#元組的拼接只能使用加法,不能使用extend
#元組包含的列表中的數(shù)據(jù)可以更改
?
P43 關(guān)于元組列表字符串的一些共同操作
len()?max()?min()?#實(shí)為比較ascii碼大小
?
P44 元組的注意事項(xiàng)以及乘號(hào)的使用
#定義元組時(shí)可以省略小括號(hào),運(yùn)行結(jié)果會(huì)存在小括號(hào)
#元組僅包含單個(gè)數(shù)據(jù)時(shí),需要在其后加上逗號(hào),否則不能作為元組,運(yùn)行結(jié)果不包含小括號(hào)
#元組與數(shù)字相乘,元組內(nèi)元素重復(fù)
?
P45 集合的創(chuàng)建&數(shù)據(jù)的去重
集合:集合是無(wú)序的,集合中的元素是唯一的,集合一般用于元組或列表中的元素去重,集合中默認(rèn)去重。
創(chuàng)建集合:
1.?變量名=set(元素)??字符串/列表/元組/字典
???運(yùn)行結(jié)果:字符串→拆成單個(gè)字符,順序隨機(jī);字典→只保留鍵;列表/元組→元素順序不變
???字典:鍵值對(duì)形式,冒號(hào)前為鍵,冒號(hào)后為值;鍵是描述性質(zhì);
例:d={“AGE”:18, “NAME”: “MUZHOU”
2.?變量名={元素, 元素, , ,}??元組/字符串/數(shù)字???#不能用字典/列表
3.?元素是唯一的,用于列表/元組/字典的鍵/字符串的去重(用set)
?
P46 集合添加元素的方法&合并集合
1.?add() 往集合中添加元素??數(shù)字/字符串/元組
2.?update 可以將集合合并???#如果a.update(b)則b并入a,b不變
?
P47 集合刪除元素的方法
1.?remove 如果有直接刪除,如果沒(méi)有程序報(bào)錯(cuò)
2.?pop 隨機(jī)刪除集合中的元素,如果集合沒(méi)有元素程序報(bào)錯(cuò)
3.?discard如果元素存在直接刪除,如果元素不存在不做任何操作
?
P48 集合的交集和并集
1.?交集 使用&符號(hào)連接多個(gè)集合,得到相同的元素
2.?并集 使用|符號(hào)連接多個(gè)集合,得到集合中的全部數(shù)據(jù)
?
P49 創(chuàng)建字典&空字典
字典是一種映射類(lèi)型,它的元素是鍵值對(duì),字典的關(guān)鍵字必須為不可變類(lèi)型,且不能重復(fù);鍵可以是任意不可變類(lèi)型(元組/字符串/數(shù)字)。創(chuàng)建空字典使用{}
1.?字典的創(chuàng)建方式
1.1?直接使用{}
1.2?使用dict(),元組結(jié)構(gòu)中嵌套列表 ex. b = dict(([“年齡”, “18”], [“名字”, “慕洲”]))
2.?空字典 直接寫(xiě){}表示空字典??#空集合為a = set()
?
P50 字典的增刪改查的操作
1.?增加 d[新的鍵]=值
2.?刪除 del d[鍵]
3.?修改 d[原有的鍵]=要改為的值
4.?查找(獲取) d[鍵]
?
P51 字典的操作方法get&keys
1.?get函數(shù) 用于從字典獲取指定鍵的值,在get函數(shù)中可以設(shè)置默認(rèn)值,當(dāng)get函數(shù)沒(méi)有獲取到對(duì)應(yīng)鍵時(shí),get函數(shù)會(huì)將默認(rèn)值返回
??r = d.get(鍵) ; r=d.get(不存在的鍵, 返回值) 則print后返回設(shè)定的值,不設(shè)定默認(rèn)值則返回None
2.?keys函數(shù) keys函數(shù)將以列表的形式返回字典中的所有鍵??#如果字典中嵌套了字典,不會(huì)返回里層的鍵
?Ex. print(d.keys()) → dict_keys([鍵1, 鍵2, 鍵3])
?
P52 字典操作方法items&values
1.?items函數(shù) 將以列表的形式返回字典中所有鍵值對(duì)
???print(d.items()) → dict_items([(鍵1, 值1), (鍵2, 值2), (鍵3, 值3)])
2.?values函數(shù) 將以列表的形式返回字典中的所有值
???print(d.values()) → dict_values([值1, 值2, 值3])
?
P53 字典的操作方法clear?
1.?clear函數(shù) 用于將字典清空
2.?copy函數(shù) 用于創(chuàng)建字典的副本,修改原字典對(duì)象,不會(huì)影響其副本
?
P54 字典的操作方法fromkeys&pop
1.?fromkeys函數(shù) 用于創(chuàng)建一個(gè)新的字典 #需要先建一個(gè)空字典 #用變量接收返回值
???第一個(gè)參數(shù)時(shí)一個(gè)序列(列表/元組/集合),用于作為字典的鍵
???第二個(gè)參數(shù)可以是任何數(shù)據(jù)類(lèi)型,作為每個(gè)鍵的值
???d.fromkeys((鍵1,鍵2), 值)
2.?pop函數(shù) 用于從字典中移除指定鍵,并返回該鍵所對(duì)應(yīng)的值??#用變量接收返回值
???
P55 字典的操作方法popitem&setdefault
1.?popitem函數(shù) 用于從字典中刪除最后一項(xiàng),并以元組形式返回該項(xiàng)所對(duì)應(yīng)的鍵和值
2.?setdefault函數(shù) 用于設(shè)置鍵的默認(rèn)值,若在字典中該鍵已存在,則忽略設(shè)置;若不存在,則添加該鍵和值??#約等于低優(yōu)先級(jí)的賦值操作 #一個(gè)字典中若有多個(gè)相同的鍵,則只保留最后一個(gè)的值
???d.setdefault(鍵,值)
?
P56 字典的操作方法update函數(shù)
update函數(shù) 用于將字典2的值更新到字典1。若字典2的鍵在字典1已經(jīng)存在,則對(duì)字典1進(jìn)行修改;若不存在,則對(duì)字典1進(jìn)行添加。
?
P57 成員檢測(cè)in? in
成員檢測(cè)與標(biāo)識(shí)號(hào)檢測(cè)
使用in和not in運(yùn)算符來(lái)判斷某個(gè)對(duì)象是否為序列的成員
in:判斷對(duì)象是否在序列(列表/字符串/元組/字典)中,如果是則返回True
not in:判斷對(duì)象是否不在序列中,如果是則返回True
Ex. print(1 in (1,2,3)) → True???print(1 not in [1,2,3]) → False
#只能判斷鍵,無(wú)法判斷值是否在字典中
?
P58 判斷某兩個(gè)對(duì)象是否相同is&is not
is判斷對(duì)象是否相同
is not判斷對(duì)象是否不相同
print(a is b)??print(a is not b)
#兩對(duì)象必須完全一樣,包括前后的空格等
#數(shù)字/字符串/元組表面一樣就完全一樣,列表/字典/集合表面一樣,其實(shí)不一樣,不是同一個(gè)對(duì)象
?
P59/60同P70/71
?
P61 python數(shù)據(jù)檢測(cè)方法type()
print(type(a)) → 返回a的數(shù)據(jù)類(lèi)型,ex. <class ‘str’>
#str字符串;int整型;list列表;tuple元組;set集合;dict字典;bool-bool值;float浮點(diǎn)數(shù)值
?
P62 python的強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換str()
str() 可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為字符串類(lèi)型??#所有類(lèi)型都可以轉(zhuǎn)化為字符串類(lèi)型
?
P63 python的數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換int()&float()
int() 可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為整型
float() 可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為浮點(diǎn)型
#數(shù)字類(lèi)型之間可以相互轉(zhuǎn)化
#只有字符串可以轉(zhuǎn)換為數(shù)字類(lèi)型
#并且字符串中的元素必須為純數(shù)字,否則無(wú)法轉(zhuǎn)換(可以在最前方帶負(fù)號(hào));帶小數(shù)點(diǎn)的字符串只能轉(zhuǎn)化為float,不能轉(zhuǎn)化為int
#浮點(diǎn)型轉(zhuǎn)整型,自動(dòng)取整,去掉小數(shù)點(diǎn)后部分,不遵循四舍五入
#布爾值也是數(shù)字類(lèi)型,True1,F(xiàn)alse0
?
P64 python的數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換bool()
其他類(lèi)型轉(zhuǎn)數(shù)字類(lèi)型中有一個(gè)特殊情況,就是其他類(lèi)型轉(zhuǎn)布爾類(lèi)型
bool() 可以把其他類(lèi)型轉(zhuǎn)為T(mén)rue或False
1.?容器類(lèi)型轉(zhuǎn)布爾類(lèi)型
???容器類(lèi)型數(shù)據(jù):字符串,列表,元組,字典,集合
???非容器類(lèi)型數(shù)據(jù):數(shù)字類(lèi)型,布爾類(lèi)型
???容器中為空---False
???容器中有元素---True
2.?數(shù)字類(lèi)型轉(zhuǎn)布爾類(lèi)型
???int類(lèi)型中,0為False,其他為T(mén)rue
???float類(lèi)型中,0.0為False,其他為T(mén)rue
?
P65 python的數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換list()
1.?數(shù)字類(lèi)型是非容器類(lèi)型,不能轉(zhuǎn)換為列表
2.?字符串轉(zhuǎn)列表時(shí),會(huì)把字符串中的每一個(gè)字符當(dāng)作列表的元素
3.?元組轉(zhuǎn)列表時(shí),會(huì)把元組中的每一個(gè)元素當(dāng)作列表的元素
4.?字典轉(zhuǎn)列表時(shí),只保留字典中的鍵
5.?集合轉(zhuǎn)列表時(shí),結(jié)果是無(wú)序的,因?yàn)榧媳旧砭褪菬o(wú)序的
?
P66 python的數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換tuple()
轉(zhuǎn)元組與轉(zhuǎn)列表的規(guī)則相同
?
P67 python的數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換set()
1.?數(shù)字類(lèi)型是非容器類(lèi)型,不能轉(zhuǎn)換為集合
2.?其他數(shù)據(jù)類(lèi)型轉(zhuǎn)集合時(shí),結(jié)果是無(wú)序的
3.?字典轉(zhuǎn)集合時(shí),只保留鍵
?
P68 python的數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換dict()
1.?數(shù)字類(lèi)型是非容器類(lèi)型,不能轉(zhuǎn)換為字典
2.?字符串不能轉(zhuǎn)字典類(lèi)型,因?yàn)樽址荒苌啥?jí)容器
3.?列表/元組類(lèi)型轉(zhuǎn)字符類(lèi)型,列表/元組必須為等長(zhǎng)二級(jí)容器,子容器中的元素個(gè)數(shù)必須為2
#可以元組里嵌列表/列表里嵌元組,一部分列表一部分元組也可以
4.?集合不能轉(zhuǎn)字典類(lèi)型?#集合中使用元組作為二級(jí)容器可以轉(zhuǎn)字典,集合/列表不可以
?
P69 python判斷一個(gè)對(duì)象是否是一個(gè)已知的類(lèi)型isinstance()
???isinstance()函數(shù)的返回值是布爾型,
???若對(duì)象的類(lèi)型是已知的類(lèi)型,那么就返回True,否則返回False
???語(yǔ)法:isinstance(對(duì)象,對(duì)象類(lèi)型)
?
P70/71 python的條件語(yǔ)句if
if...elif...else...分支語(yǔ)句
#必須有縮進(jìn),一般為四個(gè)空格,即一個(gè)tab
#條件是真值才會(huì)運(yùn)行,也可以直接用if True→運(yùn)行,if False→不運(yùn)行
#滿(mǎn)足前面的條件后,不運(yùn)行后面的
#if語(yǔ)句可以單獨(dú)存在,elif/else不可以
?
P72 python的for循環(huán)
for循環(huán)用來(lái)遍歷序列,
通過(guò)不使用下標(biāo)的方式來(lái)實(shí)現(xiàn)對(duì)序列中每一個(gè)元素的訪問(wèn)
列表/元組/字符串/字典(只訪問(wèn)鍵)/集合
遍歷數(shù)字range()??ex. for i in range (1,10):?#i是自命名的變量 #區(qū)間取左不取右,只取整數(shù)
?
P73 python的for循環(huán)操作-2
1.?遍歷字典的鍵和值 .items()
2.?函數(shù)的步長(zhǎng)range(開(kāi)始, 結(jié)束, 步長(zhǎng))
?
P74 python雙層for循環(huán)提取嵌套列表中的元素
案例
?
P75 python的while循環(huán)
while后必須輸入真條件
#a+=1即每次自我增加1
#while可以配合else使用
?
P76/77 python關(guān)鍵字break和continue在for/while循環(huán)中的使用
break語(yǔ)句可以跳出for和while的循環(huán)體
continue語(yǔ)句被用來(lái)跳過(guò)當(dāng)前循環(huán)塊中的剩余語(yǔ)句,然后繼續(xù)進(jìn)行下一輪循環(huán)
?
P78 python的pass語(yǔ)句
pass語(yǔ)句是空語(yǔ)句,是為了保持程序結(jié)構(gòu)的完整性。
它用于那些語(yǔ)法上必須要有什么語(yǔ)句,但程序什么也不做的場(chǎng)合。#比如還沒(méi)想好這部分,先用pass占位,保持代碼結(jié)構(gòu)的完整性,不會(huì)報(bào)錯(cuò)
?
P79 python函數(shù)的創(chuàng)建和調(diào)用以及參數(shù)傳遞
創(chuàng)建函數(shù)的目的是封裝業(yè)務(wù)邏輯,實(shí)現(xiàn)代碼的重復(fù)使用。
1.?創(chuàng)建函數(shù)的關(guān)鍵字:def???
#def,空格,函數(shù)名字(和變量命名規(guī)則一樣),括號(hào),冒號(hào) -- def a():
2.?調(diào)用函數(shù):a() → 運(yùn)行
3.?函數(shù)的參數(shù):()是用來(lái)傳遞參數(shù)的--- def a():的括號(hào)內(nèi)用變量接收a()的括號(hào)傳遞的內(nèi)容
#可以一次傳遞多個(gè)參數(shù)
# 先前使用的都是python的內(nèi)建函數(shù),實(shí)際中自定義函數(shù)使用更多
?
P80 python函數(shù)的位置參數(shù)
函數(shù)的參數(shù):
Python函數(shù)的參數(shù)具有靈活性,其定義的方法可以接受各種形式的參數(shù),也可以簡(jiǎn)化函數(shù)調(diào)用方法的代碼
0.?函數(shù)中的pass關(guān)鍵字
1.?位置參數(shù)
2.?默認(rèn)參數(shù)
3.?可選參數(shù)
4.?可變參數(shù)與關(guān)鍵字參數(shù)
位置參數(shù):在對(duì)函數(shù)進(jìn)行調(diào)用的時(shí)候,有幾個(gè)位置參數(shù)就需要傳遞幾個(gè)參數(shù),否則會(huì)觸發(fā)異常。并且,傳入?yún)?shù)與函數(shù)參數(shù)列表是一一對(duì)應(yīng)的,數(shù)量不對(duì)應(yīng)則會(huì)報(bào)錯(cuò)
?
P81 python函數(shù)的默認(rèn)參數(shù)
默認(rèn)參數(shù)是指帶有默認(rèn)值的參數(shù),在對(duì)該函數(shù)進(jìn)行調(diào)用的時(shí)候,可以不必顯示傳遞給該函數(shù)。當(dāng)不傳遞值的時(shí)候,函數(shù)將使用默認(rèn)值
*默認(rèn)值只會(huì)執(zhí)行一次,這條規(guī)則在默認(rèn)值為可變對(duì)象(列表、字典以及大多數(shù)類(lèi)的實(shí)例)時(shí)非常重要
*官方建議默認(rèn)參數(shù)盡量使用不可變對(duì)象!??!因?yàn)榭勺儗?duì)象會(huì)存儲(chǔ)在后續(xù)調(diào)用中傳遞給它的參數(shù)
設(shè)置默認(rèn)值:在def后括號(hào)內(nèi)給變量定義?ex. def abc(a=300, b=400):
調(diào)用:括號(hào)內(nèi)不傳入?yún)?shù),就會(huì)使用默認(rèn)值;若傳入?yún)?shù),依次以此替代默認(rèn)值
??????Ex.?def abc(a=300, b=400):???;調(diào)用時(shí) abc(600) →600會(huì)且只替代300
#可以指定默認(rèn)參數(shù)進(jìn)行傳值:ex. abc(b=1000)
?
P82 python的關(guān)鍵字參數(shù)
函數(shù)調(diào)用時(shí),指定參數(shù)名稱(chēng),稱(chēng)為關(guān)鍵字參數(shù)(不要和默認(rèn)參數(shù)混淆,這里是函數(shù)調(diào)用)
Ex. 調(diào)用時(shí) abc(a=200,b=600)
注意:函數(shù)調(diào)用時(shí),關(guān)鍵字參數(shù)必須在普通參數(shù)后面,否則會(huì)報(bào)錯(cuò)
??ex.?abc(100,a=200,b=600)
?
P83 python命名關(guān)鍵字參數(shù)
限定關(guān)鍵字形參(命名關(guān)鍵字參數(shù))
特點(diǎn):必須使用關(guān)鍵字方式傳遞參數(shù)
限定關(guān)鍵字形參,是為了限制后面幾個(gè)參數(shù)只能按關(guān)鍵字傳遞,往往是因?yàn)楹竺鎺讉€(gè)形參名具有十分明顯的含義,顯式寫(xiě)出有利于可讀性;或者后面幾個(gè)形參隨著版本更迭很可能發(fā)生變化,強(qiáng)制關(guān)鍵字形式有利于保證跨版本兼容性
#默認(rèn)參數(shù)后面必須也是默認(rèn)參數(shù)(即普通參數(shù)必須在前,默認(rèn)參數(shù)必須在后)
限定關(guān)鍵字形參的方法:使用*占位,其后的參數(shù)必須用關(guān)鍵字傳遞
ex. def abc(a, *, c, d) 則c和d只能接收關(guān)鍵字傳遞
?
P84 python的可變參數(shù)星號(hào)加參數(shù)名
可變參數(shù):傳遞參數(shù)就接受,沒(méi)有傳遞參數(shù)也不會(huì)報(bào)錯(cuò)
*參數(shù):最常見(jiàn)的變量名是args(也可以另外命名),看到該變量名,就知道它指向一個(gè)tuple對(duì)象
自動(dòng)收集所有未匹配的位置參數(shù)到一個(gè)tuple對(duì)象中,變量名args指向了此tuple對(duì)象
# 元組至少有一個(gè)逗號(hào)
Ex.?def abc(a, *args):
abc(100,200,300,400) → a接收100,*args接收200,300,400并指向元組形式,即為(200,300,400)
# print時(shí)不要帶*,直接print(args)
?
P85 python的可變參數(shù)兩個(gè)星號(hào)加參數(shù)名
**參數(shù):最常見(jiàn)的變量名是kwargs,看到該變量名,就知道變量kwargs指向一個(gè)dict對(duì)象
自動(dòng)收集所有未匹配的關(guān)鍵字參數(shù)到一個(gè)dict對(duì)象中,變量名kwargs指向了此dict對(duì)象
# 由于kwargs是字典,向其傳值要用鍵值對(duì)的方式,以鍵=值的形式輸入 ex. x=200
# 其他基本同上節(jié)課
?
P86 python參數(shù)解包(拆包)
參數(shù)數(shù)據(jù)類(lèi)型是:字符串/列表/元組/集合/字典的時(shí)候可以解包
傳遞實(shí)參時(shí),可以在序列類(lèi)型的參數(shù)前添加星號(hào),這樣他會(huì)自動(dòng)將序列中的元素依次作為參數(shù)傳遞
Ex. s= “123”
???def abc(a,b,c):
???abc(*s) →字符串s會(huì)被拆成1、2、3分別傳遞給a、b、c
#如果無(wú)法一一對(duì)應(yīng)則會(huì)報(bào)錯(cuò),ex.四個(gè)字符不能對(duì)應(yīng)三個(gè)參數(shù)
#字典解包只傳輸鍵,如果想拿到值,用兩個(gè)星號(hào)**,并且鍵名必須與函數(shù)的參數(shù)一致
?Ex. d={“年齡”:19} 那么函數(shù)應(yīng)為abc(“年齡”)
???
P87 參數(shù)的解包
對(duì)上節(jié)課的糾錯(cuò)
一個(gè)*不需要鍵和參數(shù)對(duì)應(yīng),兩個(gè)**需要
?
P88 參數(shù)解包和可變參數(shù)配合使用
注意:**參數(shù)只收集未匹配的關(guān)鍵字參數(shù)
#在調(diào)用時(shí)用*解包,列表中的元素會(huì)被拆出,逐一傳遞到函數(shù)參數(shù)
ex.?def abc(a,b,*args):
abc(100,*[200,300,400]) → a接收100,b接收200,args指向(300,400)
#在調(diào)用時(shí)用**解包與*效果類(lèi)似,但是解包后所有元素都傳遞到kwargs,不能分給其他參數(shù)如上例的b
?
P89 python函數(shù)中各種參數(shù)排列的注意事項(xiàng)
1.?可變參數(shù),必須定義在普通參數(shù)以及默認(rèn)值參數(shù)的后面
2.?函數(shù)定義時(shí),二者同時(shí)存在,一定需要將*args放在**kwargs之前
# 格式應(yīng)為 def abc(普通參數(shù),默認(rèn)值參數(shù),*參數(shù),**參數(shù)):
?
P90 python的return關(guān)鍵字
函數(shù)的返回值:python中的函數(shù)可以使用return返回?cái)?shù)據(jù),也可以不用return返回,則默認(rèn)返回None
# 函數(shù)調(diào)用的返回值可以用變量接收,默認(rèn)print該變量會(huì)返回None
return關(guān)鍵字:用來(lái)在函數(shù)執(zhí)行時(shí),幫助返回處理好的結(jié)果,返回值是一個(gè)元組數(shù)據(jù)類(lèi)型
# return關(guān)鍵字一次可以返回多個(gè)數(shù)據(jù)
???Ex.?def abc(a,b,c):
???????????return a+100,b+200,c+300
r = abc(100,200,300)
print(r)???→??(200,400,600)
# 接上,元組解包的另一種方法:x,y,z=r 然后分別打印x,y,z
?
P91 函數(shù)返回函數(shù)
1.?函數(shù)里面嵌套函數(shù)
??*注意縮進(jìn)
2.?函數(shù)返回函數(shù)
Ex.?def abc():
????????def xyz():
????????return [1,2,3]
????return xyz?#如果此處改為xyz(),則print(r)就可以得到相同結(jié)果
r = abc() #此時(shí)r接收的是xyz函數(shù)
r2 = r()
print(r2)?→?[1, 2, 3]