python高階程式設計學習筆記 語法實踐

2021-10-02 22:51:42 字數 3006 閱讀 5642

首先我們要了解的我們常用的python是由c語言實現的即cpython, python< 3.6。

python提供了許多內建的資料型別,如果選擇明智的話,可以高效解決許多問題。

你可能已經學過下面這些集合型別,因為在開發過程中很常用:

• 列表(list)

• 元組(tuple)

• 字典(dictionary)

• 集合(set)

python的容器型別當然不止這4種,它的標準庫擴充套件了其可選列表。在許多情況下,問題的答案可能正如選擇正確的資料結構一樣簡單。

python最基本的兩個集合型別就是列表與元組,它們都表示物件序列。

二者之間的根本區別:列表是動態的,其大小可以改變;而元組是不可變的,一旦建立就不能修改。

在python中,列表被實現為長度可變的陣列。強調這一點是因為在日常開發中使用頻率很高,所以對應用的效能影響很大。

從細節上來看,python中的列表是由對其他物件的引用組成的連續陣列。指向這個陣列的引用及其長度被儲存在乙個列表頭結構中。這就意味這每次新增、刪除列表元素都需要改變陣列的大小(重新分配空間),幸運的是,python在建立這些陣列時採用了指數過分配(exponential over-allocation),所以並不是每次操作都需要改變陣列大小。

使用迴圈建立乙個列表

evens =

for i in

range(10

):if i %2==

0:evens [0

,2,4

,6,8

]

[i for i in

range(10

)if i %2==

0][0

,2,4

,6,8

]

當資料量足夠大時,可以發現列表推導的執行速度是更快的

列表推導的基礎使用方式

if判斷巢狀

[i for i in

range(10

)if i %2==

0][0

,2,4

,6,8

]

if…else…判斷巢狀
[i if i %2==

0else-1

for i in

range(10

)][0

,-1,

2,-1

,4,-

1,6,

-1,8

,-1]

函式巢狀
def

func

(i):

ret = i+

10if ret %4:

return

3else

:return

4[func(i)

for i in

range(10

)][3

,3,4

,3,3

,3,4

,3,3

,3]

字典可以儲存具有唯一鍵對映關係的鍵值對,且具有無序性。

python使用雜湊表實現的字典底層的資料結構,這也就是為什麼只有可雜湊的物件才能做字典的鍵。python中不可變的內建型別(數字、字串、元組)都是可雜湊的,可變型別(列表、字典、集合)是不可雜湊的。

字典推導與類表推導實現的方式一致,且具有相同的優點。

字典具有3個基本操作,新增元素、獲取元素和刪除元素。在日常使用中需要注意,在需要頻繁的字典元素做新增、刪除操作時,最好是建立乙個新的字典,而不時始終在舊的字典上資訊操作。

當我們建立乙個字典後,對字典進行新增元素再進行大量的元素刪除,當遍歷字典時,會遍歷字典曾經達到過的最大元素數目,也就是說被刪除的元素的雜湊位址並不會同時被釋放。

字典的遍歷時會有新增和最終遍歷的順序是不一致的,這也是由底層的資料結構所造成的,鍵是雜湊後排序儲存在乙個連續的儲存空間上的,所以遍歷的結果通常不是我們預期的。

所以需要使用有序字典,解決我們問題,python標準庫的collections模組提供了ordereddict的有序字典。

from collections import ordereddict

od = ordereddict([(

'a',1)

,('b',2)

,('c',3)

])# 建立字典

print

(od)

od = ordereddict(

)# 建立空字典

od['a']=1

# 更新或新增元素

od['b']=2

od['c']=3

od.update(

)# 更新或新增元素

print

(od)

od.pop(

'a')

# 刪除元素

print

(od)

ordereddict([(

'a',1)

,('b',2)

,('c',3)

])ordereddict([(

'a',1)

,('b',2)

,('c',3)

,('d',4)

])ordereddict([(

'b',2)

,('c',3)

,('d',4)

])

x =

y =# 返回兩個集合的差集

print

(x.difference(y)

)print

(y.difference(x)

)# 返回兩個集合中不重複的元素集合。

print

(x.symmetric_difference(y)

)# 返回兩個集合的交集

print

(x.intersection(y)

)# 返回兩個集合的並集

print

(x.union(y)

)

python 高階程式設計學習筆記

2.enumerate 用法 i 0 for el in a b c print i,el i 1 上面這個遠不如下面的方法 for i,el in enumerate a b c print i,el 3.合併兩個列表,最終生成乙個字典 4.序列解包 a,b,rest 1,2,3,4,5 prin...

python學習筆記1 理解Python語言

本章主要介紹一下python語言的相關知識,包括其語言型別 作為物件導向的3大特性以及5大原則,在末尾介紹了其優缺點。與c c 等編譯型語言相比,python語言的程式並不是首先編譯成二進位制機器碼後執行,而是由python解析器解釋一句並在python虛擬機器中執行一句,直到程式結束或者丟擲錯誤。...

Python學習筆記(一)Python基本語法元素

二 程式設計例項 4 語句與函式 三 推薦課程 pprocess處理,程式的主要邏輯。ooutput輸出,程式的輸出 tempconvert.py tempstr input 請輸入帶有符號的溫度值 if tempstr 1 in f f c eval tempstr 0 1 32 1.8print...