第3講:Python基礎知識入門_第1頁
第3講:Python基礎知識入門_第2頁
第3講:Python基礎知識入門_第3頁
第3講:Python基礎知識入門_第4頁
第3講:Python基礎知識入門_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

趣學Python爬蟲爬蟲必備基礎入門本課目錄INDEX基礎數據類型多元數據類型邏輯與循環函數迭代器與生成器Python基礎火箭入門變量-基礎類型變量是一個能涵蓋你所有衣食住行的“量”

“量”小非君子我住在:北京芳齡:35我的身高:1.74字符串

–str-string浮點–

float-

float整數–

int

-

integer正負數字包含0,不帶小數點的為整數一切使用單雙三引號包裹的“東西”皆為字符串“{1:1,2:2}”“萬門大學”‘loveyou’‘!@#$%+-’‘4.5’‘-1’“100”“[1,2,3]”???‘‘‘

身高1.83年齡:28’’’123111111223450-10213正負數字不包含0,帶小數點的為浮點1.74-100.11.03.1415927注意有一個個案\斜杠是轉譯符,不能單獨存在于字符串中且不能出現在字符串最后的位置Python基礎火箭入門String字符串Float浮點Integer整數任何數據類型str()原始類型 轉換函數int()float()目標類型實例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注意事項浮點轉整數會消除小數部分取整:int(3.5)

輸出為:3字符串內為非整數數字無法轉換為整數:int(‘abc’)

系統會報錯int(‘3.14’)系統會報錯字符串內為非數字無法轉換為浮點:float(‘abc’)

系統會報錯字符串或整數轉浮點,整數后邊多一位小數:float(‘6’)

輸出為:6.0變量-基礎類型方法一

空值創建list_data=

list()方法二

空值創建list_data=[

]列表的語法規則[

‘mike’

,

‘Beijing’,

‘萬門’

,

28,

True,

1.78]元素之間使用

,區隔頭尾使用方括弧

[

]特別注意!列表內的每個元素(數據),遵守該數據類型的原有規則。比如字符串類型是要加引號‘’可以有多層嵌套,每一層嵌套為一個獨立體存在列表添加其他類型數據(嵌套)[

[‘

mike’,28],[‘Jason’,36

],(1,2,3),

{‘名字’:‘正正’,

‘愛好’:‘編程’}

]列表元組 字典變量-結構類型-列表Python基礎火箭入門增加數據修改數據personal_info

=

[‘正正’,‘男’]聲明創建一個基于個人信息的列表STEP-1STEP-2personal_info.append(1.74)列表基本操作最后一位追加

->

[‘正正’,‘男’,1.74]personal_info.insert(1,28)基于索引位置插入數據->

[‘正正’,28,‘男’,1.74]personal_info[1]

=

36 基于索引位置修改數據->

[‘正正’,36,‘男’,1.74]personal_info[0:2]

=

[‘高正’,35]

基于索引范圍修改數據->

[‘高正’,35,‘男’,1.74]變量-結構類型-列表Python基礎火箭入門personal_info[1]當前數據 [‘高正’,35,‘男’,1.74]基于索引位置取數據->

35

(整數類型)personal_info[0:2]基于索引范圍取數據->[‘高正’,35

]personal_info.pop(2)

基于索引刪除數據->

[‘高正’,35,1.74]personal_info.remove(1.74)

基于值刪除數據->

[‘高正’,35]personal_info.clear()基于索引位置刪除->

[

]清空全部列表元素->

[

]刪除整個列表del

personal_info[0:2]del

personal_info查詢數據刪除數據特別注意!修改數據和查詢數據“一線間”圈定范圍修改列表數據時,需要保證添加的數據為可迭代對象注意pop

()默認為刪除最后一位,可指定索引位置,并返回被刪除的值remove()

基于值/數據刪除數據,刪除的是第一個匹配的數據,并非所有變量-結構類型-列表Python基礎火箭入門方法一

空值創建dict_1=

dict()方法二

空值創建 dict_2

=

{

}

推薦方法三

非空值創建 dict_3

=

{‘姓名’:’mike’,’年齡’:20

}ordict

_4

=dict({‘姓名’:’mike’,’年齡’:20

})ordict_5

=

dict(姓名=‘mike’,

年齡=20)推薦變量-結構類型-字典Python基礎火箭入門字典表的語法規則{‘name’:‘mike’,

‘age’:28,‘city’:

‘Beijing’}鍵值之間

冒號

:

分割一個鍵和一個值叫鍵值對在Python里這個叫一個item(全部字典表里的鍵值對那就是items)鍵值對(item)之間的分割使用逗號

,按照key:value,的格式可以建立多個鍵值對(items)的字典表字典表加入列表或元組類型{‘names’:(‘mike’,‘Tim’),‘cities’:[‘Beijing’,‘SH’]

}注意列表

元組

[

](

不要加引號否則會轉成字符串變量-結構類型-字典Python基礎火箭入門增加數據修改數據查詢數據刪除數據info

=

{

‘姓名’:‘張三’,‘年齡’:20,‘性別’:‘男’}聲明創建一個基于個人信息的字典STEP-1STEP-2info[‘城市’]

=

‘上海’

字典名[鍵]

=

添加的值info[‘年齡’]=

22 字典名[鍵]

=

修改的值delORinfo[‘姓名’] info.get(‘姓名’)字典表基本操作info[‘性別’]

OR

info.pop(‘性別’)

OR

info.clear()

清空字典變量-結構類型-字典Python基礎火箭入門程序邏輯的組成控制語句邏輯運算邏輯語句控制條件if

如果elif 如果else 否則>=

=!=<andorin…邏輯語句與邏輯運算構成了程序的邏輯員工陳述事實員工YOU老板做決策老板BOSS判斷if

elsePython基礎火箭入門如果if

(邏輯運算-條件):(代碼塊)然后else:(代碼塊)擬定一個變量exam_score=

60if(exam_score>= 60):print(‘考試及格’)else:print(‘考試不及格’)判斷if

elsePython基礎火箭入門for 變量 in 可迭代對象

:(代碼塊)schoolname

=

‘萬門’for name in schoolname:print(name)輸出為:(注意輸出為兩行)萬門for循環啟動可迭代對象執行代碼塊有元素并取值無元素檢查下一個元素for循環終止特別注意!必須為可迭代對象基于可迭代對象內部順序依次取值注意可迭代對象內部的值并不會消失schoolname

=

‘萬門’for name in schoolname:print(name)for循環查詢schoolname元素數量為非空且有未取的值schoolname

第一個元素‘萬’賦值給name3.執行print(name)

->萬4.首次循環完成,進入第二次循環5.for循環查詢schoolname元素有未取的值6.獲取第二個元素‘門’賦值給name執行print(name)->門第二次循環完成,進入第三次循環9.for循環查詢schoolname元素有未取的值10.‘門’后面已沒有值

,退出循環賦值過程

*注意*變量

=

可迭代對象的當前元素值for循環Python基礎火箭入門for循環伴侶

range()函數一口氣要打印多個hello

Python難道真要用多個print?答案當然是否定的for name

in schoolname:print(name)這個寫法顯然也是打印不出來的schoolname

=

‘萬門’range()

–字面意思是“范圍”range()

–生成可迭代對象range()

–支持三個參數range(開始,截止,步長)range(0,10)生成0-9一共10個數字的可迭代對象range(10)只有一個參數,默認起0range(0,10,2)

0起

10止

2步長0,2,4,6,

8range()range控制了循環執行次數注意

i

賦值依然有效只是該程序未輸出for循環Python基礎火箭入門while

循環特別類似if

else

,它基于邏輯運算結果/條件決定是否繼續循環while循環啟動邏輯運算-條件True執行代碼塊while循環終止False特別注意!while可以輕松構建死循環while和for循環有交叉應用點,但是不能完全互相代替老生常談

縮進

indent

要注意,從屬關系要注意while

(邏輯運算-條件):(代碼塊)number=

0while number<5

:print(number)number=number+

1輸出為:01234number=

0while number<5

:print(number)number=number+

1創建變量

number

=

0

(注意在循環外)循環啟動檢測循環條件,邏輯運算結果為True4.循環體執行

print5.循環執行,原number+1后重新賦值(注意循環外的number值更新了)6.注意!現在number

=

17.循環再次啟動,檢測條件是否成立8.以此類推,直到number不再小于5即number<5不成立(False)9.循環結束while循環Python基礎火箭入門defmy_function(

):print(‘hello

Python’)result=1+

1return result函數是一個組織性問題,不是一個具體功能問題具體干活的還是那些if

else

for

while

等等等等聲明函數的關鍵字/命令函數名-代表函數本身函數名()-代表函數功能注意縮進從屬關系(tab)函數功能體-具體干活的代碼函數返回值(根據需要使用,非必須)注意標點符號,跟for

if

while都一樣函數Python基礎火箭入門函數調用

“呼之則來、揮之則去”defmy_function():print(‘helloPython’

)聲明函數my_function()結果輸出hello

Python(讓我吃飯得先把飯給我做好了)

調用函數特別注意!聲明函數一定要在調用函數之前函數Python基礎火箭入門什么是迭代器和生成器?這里的容器對象可以具象為:列表、字典、元組、字符串、range都算是一個“容器”可迭代對象有個方法叫

iter

()

方法,翻譯過來叫“迭代”純可迭代對象的內部數據“所見即所得”,可迭代的數據是已經看的見的數據了可迭代對象 迭代器可迭代對象并不是指某一個數據類型,而 首先迭代器肯定是一個可迭代對象是特指存儲了元素的一個容器對象。一個勤快的一個懶的一個自給自足的可迭代對象迭代器生成器生成器迭代器擁有迭代對象的所有特征迭代器同時擁有

iter

()

next

()方法迭代器可以記住遍歷對象的位置(for的工作核心之一)迭代器是一個惰性機制,何為惰性。不叫我,我不動,叫我,我才動(callby

need)首先生成器肯定是一個迭代器,也是一個可迭代對象一邊迭代一邊生成數據生成器有

iter

()

next

()

還有一個yield

關鍵字/命令(類似return)生成器之所以能生成是因為保存了一套算法/邏輯可以持續生成數據yield返回一個值,但是不會結束函數,會記住當前值的位置拼命奔跑,全都給你??叫一下,動一下??什么是迭代器和生成器?告訴我怎么做??常規的可迭代對象是一口氣給你所有的數據無論你是否需要,他總是要給你他已經拿到的所有隨著迭代對象數據的增加消耗巨大資源a

=

[1,2,3,4,5,

這里有一億個數字]迭代器是按需供應的機制,給我1億個數據你要的時候我給你取。迭代器是一個單向閥門,只能前進不能后退a

=

[1,2,3,4,5,

這里有一億個數字]next

1next

2next

3生成器是只需要給我規則就好了,我可以啥都不要有規則我可以帶你到天涯海角,而且我也是按需供應while

True:n=n+

1next

1next

2next

3大到無窮無盡生成器的優勢在于節省了內存或者說運算資源可迭代對象????列表字典元組字符串可被for

循環遍歷可被for

循環遍歷可被for

循環遍歷迭代器惰性yield

iter

()

next

()next()

iter

()

next

()next()iter(

)生成器惰性 可以有邏輯可迭代對象、迭代器和生成器有什么關系可迭代對象 迭代器生成器如何聲明/使用迭代器嚴格的說迭代器不是直接聲明的而是從常規可迭代對象轉換過來的STEP-1STEP-2STEP-3現有一個序列/集合數據(可迭代對象)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()

轉換成迭代器后,迭代器并不會引用l_data而是直接創建自己的對象注意迭代器里的元素取按照順序取出,取一個少一個,直到取完為止。(類似庫存)3.迭代器內元素取完以后輸出錯誤信息

StopIteration可以使用next()

函數或者

迭代器內置特殊方法

next

()

以“惰性”輸出/獲取迭代器里的值next(new_data) --

>>1next(new_data) --

>>2next(new_data) --

>>3new_data.

next

()

-->>

4next(new_data) --

>>5next(new_data) --->>報錯

-

StopIterationforiin

l_data:print(i)輸出foriin

l_data:print(i)輸出foriin

l_data:print(i)輸出111222333444555如何聲明/使用迭代器在for循環中

可迭代對象

迭代器

的不同表現l_data=

[1,2,3,4,5]new_data=iter(

l_data)foriin

new_data:print(i)輸出12345foriin

new_data:print(i)輸出無輸出也不會報錯因為第一個for把數據都用完了,第二次循環等于在循環一個空列表特別注意for循環每次從迭代器中取數據也是一次一次的next,但是for不會因為取完數據而報錯。其實不是不報錯而是把錯誤給屏蔽掉了。迭代器是一個單向數據獲取并減庫的機制,取完了就沒有了與之類比的就是可迭代對象,每次使用都是從頭給你來過一次如何聲明/使用一個生成器最簡單的生成器defgen_num():yield

1yield

2yield

3變量引用對象my_gen=

gen_num()調用

next(my_gen)輸出

1調用

next(my_gen)輸出

2調用

next(my_gen)輸出

3調用

next(my_gen)輸出

StopIterationdefgen_num():n=

[1,2,3]foriin

n:yield

i變量引用對象my_gen=

gen_num()調用

next(my_gen)輸出

1調用

next(my_gen)輸出

2調用

next(my_gen)輸出

3調用

next(my_gen)輸出

StopIteration以邏輯輸出生成器邊循環邊計算/生成數據<generatorobjectgen_numat

0x10afac6d0>注意直接打印生成器對象結果如何聲明/調用一個生成器傳統函數里的return生成器里的yieldreturn

命令是函數的“終結者”,遇到return函數結束yield是生

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論