Python迭代和函式

2021-10-03 05:47:52 字數 2575 閱讀 2356

迭代意味著重複多次,就像迴圈那樣。在python中只有支援迭代協議的物件才可以進行遍歷和迴圈。迭代協議支援__next__方法,用於指標式的讀取可迭代物件所包含的資訊。

常用的迭代工具有:for、推導、map。迭代又分為迭代器物件和可迭代物件。迭代器是已經實現__next__的物件(如檔案),而可迭代物件使用iter()用於生成迭代器,本身不支援__next__方法,但使用for迴圈時自動呼叫iter(),從而實現遍歷。

>>

>f=

open

('data.txt'

,encoding=

'utf8'

)>>

>

iter

(f) is f

true //檔案為迭代器物件

>>

>l=[1

,2,3

,4,5

]>>

>

iter

(l) is l

false //列表為可迭代物件

>>

>i=

iter

(l)>>

>i.

__next__()

//可以實現迭代器方法

1

為何使用迭代器而不是列表呢?列表只能一次性羅列所有值,當資料量較大時,我們只想逐個獲取值,而不是使用列表一次性獲取,列表可能會占用太多記憶體而導致演算法效率低。

正規的定義是:實現了方法__iter__的物件是可迭代的,而實現了方法__next__的物件是迭代器。

#推導的用法l=[

1,2,

3,4,

5]s='kdfjs'

res1=

[x for x in l]

res2=

[s1.

upper()

for s1 in s]

res3=

[s1 for s1 in s if s.

endwith

('s')]

#即第乙個s1為返回結果,for後面為遍歷過程,if後面為過濾條件

python中內建可迭代物件主要有range()、zip()、map()

>>

>r=

range(1

,6)//產生序列12345

>>

>

iter

(r) is r

false

>>

>result=

zip(

['x'

,'y'

,'z'],

[1,2

,3])

>>

>

for x in result:

print

(x)(

'x',1)

('y',2

)('z',3)

>>

>

iter

(result) is result

true

def double_number

(x):

return x*2l=

[1,2.3

.4.5

]result=

list

(map

(double_number

(l))

)print

(result)

#實現l中元素乘二

函式猶如小型程式,可以用來執行特定的操作。python提供了很多函式(如len()),用來完成不同的任務。此外,我們也可以自己定義函式。

定義函式方法:def 函式名(形式引數)

呼叫函式方法:函式(實參)

#利用定義函式方法求交集

def intersect

(seq1,seq2)

: res[

]for x in seq1:

if x in seq2:

res.()

return res

變數作用域:local => enclousure => global => built-in

python中引數傳遞依賴於資料型別是否可變。對於不可變型別,僅僅傳遞副本給函式,函式內的操作不影響原始值。對於可變型別,傳遞位址引用,函式內操作會影響原始值。

def change_number

(x):

x+=10

x=5print

('x={}'

.format

(x))

change_number

(x)print

('x={}'

.format

(x))

//整型為不可變型別

def change_list

(l):

l[0]

l=[1,

2,3]

print

(l)change_list

(l)print

(l)//列表為可變型別

Python 迭代和函式

問題 python中那些物件可以遍歷迴圈?支援迭代協議的物件可以遍歷迴圈,這種物件的特點是內建了 next 方法,該方法可移動指標到下乙個關聯物件。判斷是否內建next 方法,用iter an highlighted block list1 1 2,3 list1 iter list1 false ...

python迭代 Python迭代和生成

簡介在python中存在一種名叫迭代器的容器物件。顧名思義,這種物件能夠產生迭代的數值,在許多場合中,比如在機器學習領域,要從乙個迭代器裡不斷地提取樣本資料進行訓練。而生成器也是一種迭代器,因此在本文中將詳細介紹迭代器的知識。迭代器定義 迭代器也稱為游標,形象地理解為程式執行到 就在該處做個標記,下...

可迭代物件和迭代器以及偏函式(python)

一 在python中的可迭代物件 str list set tuple dict generator。二 迭代器 能夠被next呼叫,並且返回下乙個值的叫做迭代器 注意 迭代器一定是可迭代物件,但可迭代物件不一定是迭代器!上圖就是乙個迭代器 三 迭代器用到的模組以及其方法 模組 collection...