python內建常用高階函式:
一、函式式程式設計
1、map()函式
是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,
並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回
def
add(x)
:return x+x
print
(map
(add,[1
,2,3
]))# out:
print
(list
(map
(add,[1
,2,3
])))
# out:[2, 4, 6]
2、reduce()函式
reduce()函式也是python內建的乙個高階函式。
reduce()函式接收的引數和 map()類似,乙個函式 f,乙個list,但行為和 map()不同,reduce()傳入的函式f必須接收兩個引數,
reduce()對list的每個元素反覆呼叫函式f,並返回最終結果值。
在 python3 中,reduce() 函式已經被從全域性名字空間裡移除了,它現在被放置在 functools 模組裡,如果想要使用它,
則需要通過引入 functools 模組來呼叫 reduce() 函式:
'''
'''from functools import
reduce
defprod
(x, y)
:return x*y
print
(reduce
(prod,[2
,4,5
,7,12
]))# out:3360 # 2*4*5*7*12
# reduce()還可以接收第3個可選引數,作為計算的初始值。如果把初始值設為100
print
(reduce
(prod,[2
,4,5
,7,12
],100)
)# out:336000 # 2*4*5*7*12*100
3、filter()函式
是 python 內建的另乙個有用的高階函式,filter()函式接收乙個函式 f 和乙個list,
這個函式f的作用是對每個元素進行判斷,返回 true或 false,filter()根據判斷結果自動過濾掉不符合條件的元素,
返回由符合條件元素組成的新list。
import math
defis_sqr
(x):
return math.sqrt(x)
==int
(math.sqrt(x)
)print
(list
(filter
(is_sqr,
range(1
,101))
))# out:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
4、sorted() 函式
對所有可迭代的物件進行排序操作。
sort 與 sorted 區別:
sort 是應用在 list 上的方法,sorted 可以對所有可迭代的物件進行排序操作。
list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函式 sorted 方法返回的是乙個新的 list,而不是在原來的基礎上進行的操作。
sorted
(iterable, key=
none
, reverse=
false
)
iterable – 可迭代物件。
key – 主要是用來進行比較的元素,只有乙個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的乙個元素來進行排序。
reverse – 排序規則,reverse = true 降序 , reverse = false 公升序(預設)。
返回重新排序的列表
'''
'''print
(sorted([
5,2,
3,1,
4]))
# out:[1, 2, 3, 4, 5]
print
(sorted()
)# out:[1, 2, 3, 4, 5]
利用key進行倒序排序
example_list =[5
,0,6
,1,2
,7,3
,4]result_list =
sorted
(example_list, key=
lambda x: x*-1
)print
(result_list)
要進行反向排序,也可以通過傳入第三個引數 reverse=true:
example_list =[5
,0,6
,1,2
,7,3
,4]print
(sorted
(example_list, reverse=
true))
# out:[7, 6, 5, 4, 3, 2, 1, 0]
5、python的函式不但可以返回int、str、list、dict等資料型別,還可以返回函式!
請注意區分返回函式和返回值:
def
my_abs()
:return
abs# 返回函式,返回函式可以把一些計算延遲
defmy_abs2
(x):
return
abs(x)
# 返回函式呼叫的結果,返回值是乙個數值
def
calc_prod
(lst)
:def
lazy_prod()
: prod =
1for i in lst:
prod = prod*i
return prod
return lazy_prod
f = calc_prod([1
,2,3
,4])
print
(f()
)# out:24
5.1、為什麼定義lazy_prod()函式和返回函式cal_prod()?
python支援返回函式的基本語法
'''
'''deff(
):print
('call f()...'
)# 定義函式g:
defg()
:print
('call g()...'
)# 返回函式g:
return g
只返回函式的作用:
返回函式可以把一些計算延遲執行。例如,如果定義乙個普通的求和函式:
def
calc_sum
(lst)
:return
sum(lst)
print
(calc_sum([1
,2,3
,4])
)# out:10
defcalc_sum
(lst)
:def
lazy_sum()
:return
sum(lst)
return lazy_sum
f = calc_sum([1
,2,3
,4])
print
(f)# **並沒有對函式進行執行計算出結果,而是返回函式,所以列印出來的是型別
#out: .lazy_sum at 0x000001ff43462e18>
print
(f()
)# 對返回的函式進行呼叫時,才計算出結果
# out:10
python中的常用內建屬性與內建函式
常用專有屬性常用專有屬性 說明觸發方式 init 構造初始化函式 建立例項後,賦值時使用,在 new 後 new 生成例項所需屬性 建立例項時 class 例項所在的類 例項.class str 例項字串表示,可讀性 print 類例項 如沒實現,使用repr結果 repr 例項字串表示,準確性 類...
python中內建函式 python常用內建函式
1.map函式 對指定序列對映到指定函式,返回結果集 a 1,3,5 b 2,4,6 def mf x,y return x y map none,a,b 1,2 3,4 5,6 map mf,a,b 2,12,30 list map lambda x,y x y,1,2,3 4,5,6 5,7,9...
Python 中的常用內建函式 基礎篇
思維導圖 1 再談生成器 生成器本質是迭代器 獲取生成器的方法 生成器函式,生成器表示式,通過資料轉化 生成器函式,函式內部有yield,執行這個函式獲取的是生成器 next 可以觸發生成器的執行,執行到下乙個yield 特點 惰性機制,只能向前執行,節省記憶體 2 再談推導式 沒有元組推導式,元組...