版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
趣學(xué)Python爬蟲爬蟲必備基礎(chǔ)入門本課目錄INDEX基礎(chǔ)數(shù)據(jù)類型多元數(shù)據(jù)類型邏輯與循環(huán)函數(shù)迭代器與生成器Python基礎(chǔ)火箭入門變量-基礎(chǔ)類型變量是一個能涵蓋你所有衣食住行的“量”
–
“量”小非君子我住在:北京芳齡:35我的身高:1.74字符串
–str-string浮點(diǎn)–
float-
float整數(shù)–
int
-
integer正負(fù)數(shù)字包含0,不帶小數(shù)點(diǎn)的為整數(shù)一切使用單雙三引號包裹的“東西”皆為字符串“{1:1,2:2}”“萬門大學(xué)”‘loveyou’‘!@#$%+-’‘4.5’‘-1’“100”“[1,2,3]”???‘‘‘
身高1.83年齡:28’’’123111111223450-10213正負(fù)數(shù)字不包含0,帶小數(shù)點(diǎn)的為浮點(diǎn)1.74-100.11.03.1415927注意有一個個案\斜杠是轉(zhuǎn)譯符,不能單獨(dú)存在于字符串中且不能出現(xiàn)在字符串最后的位置Python基礎(chǔ)火箭入門String字符串Float浮點(diǎn)Integer整數(shù)任何數(shù)據(jù)類型str()原始類型 轉(zhuǎn)換函數(shù)int()float()目標(biāo)類型實(shí)例my_age=
18my_new_age
=
str(my_age)輸出為:“18”room_number=“520”room_new_number
=
int(room_number)輸出為:520ticket_price=
“3.5”ticket_new_price
=
float(ticket_price)輸出為:3.5注意事項(xiàng)浮點(diǎn)轉(zhuǎn)整數(shù)會消除小數(shù)部分取整:int(3.5)
輸出為:3字符串內(nèi)為非整數(shù)數(shù)字無法轉(zhuǎn)換為整數(shù):int(‘a(chǎn)bc’)
系統(tǒng)會報(bào)錯int(‘3.14’)系統(tǒng)會報(bào)錯字符串內(nèi)為非數(shù)字無法轉(zhuǎn)換為浮點(diǎn):float(‘a(chǎn)bc’)
系統(tǒng)會報(bào)錯字符串或整數(shù)轉(zhuǎn)浮點(diǎn),整數(shù)后邊多一位小數(shù):float(‘6’)
輸出為:6.0變量-基礎(chǔ)類型方法一
空值創(chuàng)建list_data=
list()方法二
空值創(chuàng)建list_data=[
]列表的語法規(guī)則[
‘mike’
,
‘Beijing’,
‘萬門’
,
28,
True,
1.78]元素之間使用
,區(qū)隔頭尾使用方括弧
[
]特別注意!列表內(nèi)的每個元素(數(shù)據(jù)),遵守該數(shù)據(jù)類型的原有規(guī)則。比如字符串類型是要加引號‘’可以有多層嵌套,每一層嵌套為一個獨(dú)立體存在列表添加其他類型數(shù)據(jù)(嵌套)[
[‘
mike’,28],[‘Jason’,36
],(1,2,3),
{‘名字’:‘正正’,
‘愛好’:‘編程’}
]列表元組 字典變量-結(jié)構(gòu)類型-列表Python基礎(chǔ)火箭入門增加數(shù)據(jù)修改數(shù)據(jù)personal_info
=
[‘正正’,‘男’]聲明創(chuàng)建一個基于個人信息的列表STEP-1STEP-2personal_info.append(1.74)列表基本操作最后一位追加
->
[‘正正’,‘男’,1.74]personal_info.insert(1,28)基于索引位置插入數(shù)據(jù)->
[‘正正’,28,‘男’,1.74]personal_info[1]
=
36 基于索引位置修改數(shù)據(jù)->
[‘正正’,36,‘男’,1.74]personal_info[0:2]
=
[‘高正’,35]
基于索引范圍修改數(shù)據(jù)->
[‘高正’,35,‘男’,1.74]變量-結(jié)構(gòu)類型-列表Python基礎(chǔ)火箭入門personal_info[1]當(dāng)前數(shù)據(jù) [‘高正’,35,‘男’,1.74]基于索引位置取數(shù)據(jù)->
35
(整數(shù)類型)personal_info[0:2]基于索引范圍取數(shù)據(jù)->[‘高正’,35
]personal_info.pop(2)
基于索引刪除數(shù)據(jù)->
[‘高正’,35,1.74]personal_info.remove(1.74)
基于值刪除數(shù)據(jù)->
[‘高正’,35]personal_info.clear()基于索引位置刪除->
[
]清空全部列表元素->
[
]刪除整個列表del
personal_info[0:2]del
personal_info查詢數(shù)據(jù)刪除數(shù)據(jù)特別注意!修改數(shù)據(jù)和查詢數(shù)據(jù)“一線間”圈定范圍修改列表數(shù)據(jù)時,需要保證添加的數(shù)據(jù)為可迭代對象注意pop
()默認(rèn)為刪除最后一位,可指定索引位置,并返回被刪除的值remove()
基于值/數(shù)據(jù)刪除數(shù)據(jù),刪除的是第一個匹配的數(shù)據(jù),并非所有變量-結(jié)構(gòu)類型-列表Python基礎(chǔ)火箭入門方法一
空值創(chuàng)建dict_1=
dict()方法二
空值創(chuàng)建 dict_2
=
{
}
推薦方法三
非空值創(chuàng)建 dict_3
=
{‘姓名’:’mike’,’年齡’:20
}ordict
_4
=dict({‘姓名’:’mike’,’年齡’:20
})ordict_5
=
dict(姓名=‘mike’,
年齡=20)推薦變量-結(jié)構(gòu)類型-字典Python基礎(chǔ)火箭入門字典表的語法規(guī)則{‘name’:‘mike’,
‘a(chǎn)ge’:28,‘city’:
‘Beijing’}鍵值之間
冒號
:
分割一個鍵和一個值叫鍵值對在Python里這個叫一個item(全部字典表里的鍵值對那就是items)鍵值對(item)之間的分割使用逗號
,按照key:value,的格式可以建立多個鍵值對(items)的字典表字典表加入列表或元組類型{‘names’:(‘mike’,‘Tim’),‘cities’:[‘Beijing’,‘SH’]
}注意列表
元組
[
](
)
外
不要加引號否則會轉(zhuǎn)成字符串變量-結(jié)構(gòu)類型-字典Python基礎(chǔ)火箭入門增加數(shù)據(jù)修改數(shù)據(jù)查詢數(shù)據(jù)刪除數(shù)據(jù)info
=
{
‘姓名’:‘張三’,‘年齡’:20,‘性別’:‘男’}聲明創(chuàng)建一個基于個人信息的字典STEP-1STEP-2info[‘城市’]
=
‘上?!?/p>
字典名[鍵]
=
添加的值info[‘年齡’]=
22 字典名[鍵]
=
修改的值delORinfo[‘姓名’] info.get(‘姓名’)字典表基本操作info[‘性別’]
OR
info.pop(‘性別’)
OR
info.clear()
清空字典變量-結(jié)構(gòu)類型-字典Python基礎(chǔ)火箭入門程序邏輯的組成控制語句邏輯運(yùn)算邏輯語句控制條件if
如果elif 如果else 否則>=
=!=<andorin…邏輯語句與邏輯運(yùn)算構(gòu)成了程序的邏輯員工陳述事實(shí)員工YOU老板做決策老板BOSS判斷if
elsePython基礎(chǔ)火箭入門如果if
(邏輯運(yùn)算-條件):(代碼塊)然后else:(代碼塊)擬定一個變量exam_score=
60if(exam_score>= 60):print(‘考試及格’)else:print(‘考試不及格’)判斷if
elsePython基礎(chǔ)火箭入門for 變量 in 可迭代對象
:(代碼塊)schoolname
=
‘萬門’for name in schoolname:print(name)輸出為:(注意輸出為兩行)萬門for循環(huán)啟動可迭代對象執(zhí)行代碼塊有元素并取值無元素檢查下一個元素for循環(huán)終止特別注意!必須為可迭代對象基于可迭代對象內(nèi)部順序依次取值注意可迭代對象內(nèi)部的值并不會消失schoolname
=
‘萬門’for name in schoolname:print(name)for循環(huán)查詢schoolname元素?cái)?shù)量為非空且有未取的值schoolname
第一個元素‘萬’賦值給name3.執(zhí)行print(name)
->萬4.首次循環(huán)完成,進(jìn)入第二次循環(huán)5.for循環(huán)查詢schoolname元素有未取的值6.獲取第二個元素‘門’賦值給name執(zhí)行print(name)->門第二次循環(huán)完成,進(jìn)入第三次循環(huán)9.for循環(huán)查詢schoolname元素有未取的值10.‘門’后面已沒有值
,退出循環(huán)賦值過程
*注意*變量
=
可迭代對象的當(dāng)前元素值for循環(huán)Python基礎(chǔ)火箭入門for循環(huán)伴侶
range()函數(shù)一口氣要打印多個hello
Python難道真要用多個print?答案當(dāng)然是否定的for name
in schoolname:print(name)這個寫法顯然也是打印不出來的schoolname
=
‘萬門’range()
–字面意思是“范圍”range()
–生成可迭代對象range()
–支持三個參數(shù)range(開始,截止,步長)range(0,10)生成0-9一共10個數(shù)字的可迭代對象range(10)只有一個參數(shù),默認(rèn)起0range(0,10,2)
0起
10止
2步長0,2,4,6,
8range()range控制了循環(huán)執(zhí)行次數(shù)注意
i
賦值依然有效只是該程序未輸出for循環(huán)Python基礎(chǔ)火箭入門while
循環(huán)特別類似if
else
,它基于邏輯運(yùn)算結(jié)果/條件決定是否繼續(xù)循環(huán)while循環(huán)啟動邏輯運(yùn)算-條件True執(zhí)行代碼塊while循環(huán)終止False特別注意!while可以輕松構(gòu)建死循環(huán)while和for循環(huán)有交叉應(yīng)用點(diǎn),但是不能完全互相代替老生常談
縮進(jìn)
indent
要注意,從屬關(guān)系要注意while
(邏輯運(yùn)算-條件):(代碼塊)number=
0while number<5
:print(number)number=number+
1輸出為:01234number=
0while number<5
:print(number)number=number+
1創(chuàng)建變量
number
=
0
(注意在循環(huán)外)循環(huán)啟動檢測循環(huán)條件,邏輯運(yùn)算結(jié)果為True4.循環(huán)體執(zhí)行
print5.循環(huán)執(zhí)行,原number+1后重新賦值(注意循環(huán)外的number值更新了)6.注意!現(xiàn)在number
=
17.循環(huán)再次啟動,檢測條件是否成立8.以此類推,直到number不再小于5即number<5不成立(False)9.循環(huán)結(jié)束while循環(huán)Python基礎(chǔ)火箭入門defmy_function(
):print(‘hello
Python’)result=1+
1return result函數(shù)是一個組織性問題,不是一個具體功能問題具體干活的還是那些if
else
for
while
等等等等聲明函數(shù)的關(guān)鍵字/命令函數(shù)名-代表函數(shù)本身函數(shù)名()-代表函數(shù)功能注意縮進(jìn)從屬關(guān)系(tab)函數(shù)功能體-具體干活的代碼函數(shù)返回值(根據(jù)需要使用,非必須)注意標(biāo)點(diǎn)符號,跟for
if
while都一樣函數(shù)Python基礎(chǔ)火箭入門函數(shù)調(diào)用
之
“呼之則來、揮之則去”defmy_function():print(‘helloPython’
)聲明函數(shù)my_function()結(jié)果輸出hello
Python(讓我吃飯得先把飯給我做好了)
調(diào)用函數(shù)特別注意!聲明函數(shù)一定要在調(diào)用函數(shù)之前函數(shù)Python基礎(chǔ)火箭入門什么是迭代器和生成器?這里的容器對象可以具象為:列表、字典、元組、字符串、range都算是一個“容器”可迭代對象有個方法叫
iter
()
方法,翻譯過來叫“迭代”純可迭代對象的內(nèi)部數(shù)據(jù)“所見即所得”,可迭代的數(shù)據(jù)是已經(jīng)看的見的數(shù)據(jù)了可迭代對象 迭代器可迭代對象并不是指某一個數(shù)據(jù)類型,而 首先迭代器肯定是一個可迭代對象是特指存儲了元素的一個容器對象。一個勤快的一個懶的一個自給自足的可迭代對象迭代器生成器生成器迭代器擁有迭代對象的所有特征迭代器同時擁有
iter
()
和
next
()方法迭代器可以記住遍歷對象的位置(for的工作核心之一)迭代器是一個惰性機(jī)制,何為惰性。不叫我,我不動,叫我,我才動(callby
need)首先生成器肯定是一個迭代器,也是一個可迭代對象一邊迭代一邊生成數(shù)據(jù)生成器有
iter
()
和
next
()
還有一個yield
關(guān)鍵字/命令(類似return)生成器之所以能生成是因?yàn)楸4媪艘惶姿惴?邏輯可以持續(xù)生成數(shù)據(jù)yield返回一個值,但是不會結(jié)束函數(shù),會記住當(dāng)前值的位置拼命奔跑,全都給你??叫一下,動一下??什么是迭代器和生成器?告訴我怎么做??常規(guī)的可迭代對象是一口氣給你所有的數(shù)據(jù)無論你是否需要,他總是要給你他已經(jīng)拿到的所有隨著迭代對象數(shù)據(jù)的增加消耗巨大資源a
=
[1,2,3,4,5,
這里有一億個數(shù)字]迭代器是按需供應(yīng)的機(jī)制,給我1億個數(shù)據(jù)你要的時候我給你取。迭代器是一個單向閥門,只能前進(jìn)不能后退a
=
[1,2,3,4,5,
這里有一億個數(shù)字]next
1next
2next
3生成器是只需要給我規(guī)則就好了,我可以啥都不要有規(guī)則我可以帶你到天涯海角,而且我也是按需供應(yīng)while
True:n=n+
1next
1next
2next
3大到無窮無盡生成器的優(yōu)勢在于節(jié)省了內(nèi)存或者說運(yùn)算資源可迭代對象????列表字典元組字符串可被for
循環(huán)遍歷可被for
循環(huán)遍歷可被for
循環(huán)遍歷迭代器惰性yield
iter
()
next
()next()
iter
()
next
()next()iter(
)生成器惰性 可以有邏輯可迭代對象、迭代器和生成器有什么關(guān)系可迭代對象 迭代器生成器如何聲明/使用迭代器嚴(yán)格的說迭代器不是直接聲明的而是從常規(guī)可迭代對象轉(zhuǎn)換過來的STEP-1STEP-2STEP-3現(xiàn)有一個序列/集合數(shù)據(jù)(可迭代對象)l_data=[1,2,3,4,5]new_data=iter(
l_data)print(
)id()=
9483891[1,2,3,4,5]id()=
8492829<list_iteratorobjectat
0x1056bd550>特別注意通過iter()
轉(zhuǎn)換成迭代器后,迭代器并不會引用l_data而是直接創(chuàng)建自己的對象注意迭代器里的元素取按照順序取出,取一個少一個,直到取完為止。(類似庫存)3.迭代器內(nèi)元素取完以后輸出錯誤信息
StopIteration可以使用next()
函數(shù)或者
迭代器內(nèi)置特殊方法
next
()
以“惰性”輸出/獲取迭代器里的值next(new_data) --
>>1next(new_data) --
>>2next(new_data) --
>>3new_data.
next
()
-->>
4next(new_data) --
>>5next(new_data) --->>報(bào)錯
-
StopIterationforiin
l_data:print(i)輸出foriin
l_data:print(i)輸出foriin
l_data:print(i)輸出111222333444555如何聲明/使用迭代器在for循環(huán)中
可迭代對象
和
迭代器
的不同表現(xiàn)l_data=
[1,2,3,4,5]new_data=iter(
l_data)foriin
new_data:print(i)輸出12345foriin
new_data:print(i)輸出無輸出也不會報(bào)錯因?yàn)榈谝粋€for把數(shù)據(jù)都用完了,第二次循環(huán)等于在循環(huán)一個空列表特別注意for循環(huán)每次從迭代器中取數(shù)據(jù)也是一次一次的next,但是for不會因?yàn)槿⊥陻?shù)據(jù)而報(bào)錯。其實(shí)不是不報(bào)錯而是把錯誤給屏蔽掉了。迭代器是一個單向數(shù)據(jù)獲取并減庫的機(jī)制,取完了就沒有了與之類比的就是可迭代對象,每次使用都是從頭給你來過一次如何聲明/使用一個生成器最簡單的生成器defgen_num():yield
1yield
2yield
3變量引用對象my_gen=
gen_num()調(diào)用
next(my_gen)輸出
1調(diào)用
next(my_gen)輸出
2調(diào)用
next(my_gen)輸出
3調(diào)用
next(my_gen)輸出
StopIterationdefgen_num():n=
[1,2,3]foriin
n:yield
i變量引用對象my_gen=
gen_num()調(diào)用
next(my_gen)輸出
1調(diào)用
next(my_gen)輸出
2調(diào)用
next(my_gen)輸出
3調(diào)用
next(my_gen)輸出
StopIteration以邏輯輸出生成器邊循環(huán)邊計(jì)算/生成數(shù)據(jù)<generatorobjectgen_numat
0x10afac6d0>注意直接打印生成器對象結(jié)果如何聲明/調(diào)用一個生成器傳統(tǒng)函數(shù)里的return生成器里的yieldreturn
命令是函數(shù)的“終結(jié)者”,遇到return函數(shù)結(jié)束yield是生
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車險(xiǎn)知識課件培訓(xùn)
- 車間級安全培訓(xùn)教育內(nèi)容課件
- 2025年學(xué)校預(yù)防校園欺凌工作總結(jié)范本(3篇)
- 車間碰撞事故安全培訓(xùn)課件
- 2026年廣東深圳市高職單招職業(yè)適應(yīng)性測試試題解析及答案
- 藥物外滲高級護(hù)理2026
- 車間工人安全事故培訓(xùn)課件
- 車間安全培訓(xùn)問答題課件
- 糖尿病患者血脂管理指南2026
- 車間安全員消防培訓(xùn)記錄課件
- 圍手術(shù)期心肌梗塞的護(hù)理
- 2025-2026學(xué)年蘇教版(2024)小學(xué)科學(xué)二年級上冊期末測試卷附答案(共三套)
- 垃圾清運(yùn)補(bǔ)充合同范本
- 2026屆湖南省長沙市長郡集團(tuán)九年級物理第一學(xué)期期末預(yù)測試題含解析
- 生日主題宴會設(shè)計(jì)方案
- 《JJG 1081.1-2024鐵路機(jī)車車輛輪徑量具檢定規(guī)程 第1部分:輪徑尺》 解讀
- 《基坑圍護(hù)結(jié)構(gòu)滲漏檢測技術(shù)標(biāo)準(zhǔn)》
- 代辦營業(yè)執(zhí)照合同模板范文
- 職業(yè)教育示范性教師教學(xué)創(chuàng)新團(tuán)隊(duì)建設(shè)方案
- 防暴演練安全培訓(xùn)課件
- 基礎(chǔ)越南語1課件
評論
0/150
提交評論