Python函式高階

2021-09-24 13:35:15 字數 3807 閱讀 8568

python3 range()函式返回的是乙個可迭代物件 (型別是物件) , 而不是列表型別,所以列印的時候不會列印列表。python3 list()函式是物件迭代器,可以把range(返回的可選代物件轉為-乙個列表,返回的變數型別為列表。python2 range()函式返回的是列表。

函式語法

range(stop)

range(start, stop[, step])

引數說明:

● start: 計數從start開始。預設是從0開始。例如range (5)等價於range(0, 5);

● stop:計數到stop結束,但不包括stop. 例如: range(0, 5)是[0, 1,2, 3, 4]沒有5

● step:步長,預設為1.例如:range(0, 5)等價於range(0, 5, 1)

range()函式返回的是乙個可迭代物件,而不是列表型別,所以列印的時候不會列印列表

>>>range(5)

range(0, 5)

>>> for i in range(5):

print(i)

————01

234>>> list(range(5))

[0,1,2,3,4]

>>> list(range(0))

map(函式,列表或其他可迭代物件)會根據提供的函式對指定序列做對映。

第乙個引數function以引數序列中的每乙個元素呼叫function函式,返回包含每次function函式返回值的新列表

引數:

返回值:

python 3.x返回迭代器。

函式語法:

map(function, iterable, ...)
如果list(map(,))才可以得到列表,轉化成想要的資料型別才可以輸出,for迴圈裡也可以通過編寫輸出具有階段功能,傳入引數不等時按最短的引數來。

>>>def square(x) :

>>> returnx ** 2

>>>map (square, [1,2,3,4,5])

>>>def square (x): #計算平方數

>>> return x** 2

>>>list (map(square, [1,2,3, 4,5])) # 計算列表各個元素的平方

[1,4, 9, 16,25]

>>>map(lambdax: x**2,[1,2,3,4,5]) #使用lambda匿名函式

>>>def add(x, y, z) :

>>> return x+y+z

>>>list1 = [1,2,3]

>>>list2 = [1,2,3, 4]

>>>list3 = [1,2,3,4,5]

>>>res = map(add, listl, list2,list3)

>>>print (list (res))

[3, 6, 9]

filter()函式用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。

該接收兩個引數,第乙個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判,然後返回true或false ,最後將返回true的元素放到新列表中。

語法:

filter(function, iterable)

引數:

內建函式filter()將一乙個 單引數函式作用到乙個序列上,返回該序列中使得該函式返回值為true的那些元素組成的filter物件,如果指定函式為none ,則返回序列中等價於true的元素。

>>> seq = [ 'foo',  'x41',  '?!',  『***』 ]

>>> def func(x):

return x. isalnum() #測試是否為字母或數字

>>> filter(func, seq) #返回filter物件

>>> list(filter(func, seq)) #把filter物件轉換為列 表

['foo', 'x41']

關於filter()方法, python3和python2有一點不同。

python2.x中返回的是過濾後的列表,而python3中返回到是乙個filter 類。

filter類實現了_ iter__ 和_ next__ 方法, 可以看成是乙個迭代器,有惰性運算的特性,相對python2.x提公升了效能,可以節約記憶體。

>>>a = filter(lambda x: x % 2 ==0, range(10))print(a)

輸出:

zip()函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。

如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 * 號操作符,可以將元組解壓為列表。

語法:

zip([iterable, ...])
引數:

● iterabl -----> 個或多個迭代器

返回值:返回元組列表。

>>>a = [1,2, 3]

>>>b = [4,5, 6]

>>>zip(a, b)

>>>a = [1,2,3]

>>>b = [4,5, 6]

>>>list(zip(a, b))

[(1, 4), (2, 5), (3, 6)]

>>>a = [1,2,3]

>>>b = [4,5, 6]

>>>zipped = zip(a, b)

>>>list (zip (*zipped))

[(1, 2, 3), (4, 5, 6)]

用於將乙個可遍歷的資料物件(如列表、元組或字串)組合為乙個索引序列,同時列出資料和資料下標,一般用在for迴圈當中。sequence:乙個序列、迭代器、其他支援迭代物件。start:下表起始位置

>>>seasons = [' spring', ' summer", 'fall', 'winter' ]

>>>list (enumerate (seasons))

[(0, spring ), (1, ' summer' ), (2, fall'), (3, ' winter' )]

>>>list (enumerate (seasons, start=1)) #下標從1開始

[(1, ' spring ), (2, ' summer' ), (3, fall' ), (4, ' winter' )]

>>>i=0

>>>seq = [' tom',,, 'jerry', 'bob' ]

>>>for element in seq:

>>> print (i, seq[i])

>>> i+=1

0 tom

1 jerry

2 bob

python 函式高階 python 函式高階

形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...

Python高階 函式高階

閉包 closure 常規函式中可以在函式的引數中新增引數的預設值來簡化函式的操作,偏函式也可以做到這一點,而且會更加的方便管理函式的操作。通過內建模組functools的partial進行定義和處理 語法結構 新函式名稱 functools.partial 函式名稱,預設賦值引數 例如 全域性函式...

python 函式 高階函式

filter 函式是 python 內建的另乙個有用的高階函式,filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如判斷奇偶數 def...