匿名函式:lambda表示式匿名函式單獨這麼用意義不大,一般情況下是和其他函式一起使用,才能顯示它的功能。比如:map()、filter()…等內建函式字典、跳轉表? lambda表示式用來宣告匿名函式,也就是沒有函式名字的臨時使用的小函式,尤其適合需要乙個函式作為另乙個函式引數的場合。
? lambda表示式只可以包含乙個表示式,該表示式的計算結果可以看作是函式的返回值,不允許包含其他複雜的語句,但在表示式中可以呼叫其他函式。
lambda宣告匿名函式的一般形式: lambda 引數列表:表示式
def
demo
(n):
return n*n
a_list =[1
,2,3
,4,5
]list
(map
(lambda x: demo(x)
, a_list)
)#在lambda表示式中呼叫函式
函式的遞迴
def
fac(n)
:if n ==1:
return
1else
:return fac(n-1)
*nx =
int(
input
("請輸入乙個整數:"))
print
(f"! = "
)
map()函式是對映函式
新定義列表儲存結果
lst =[1
,2,3
,4,5
]res =
for i in lst:2)
print
(res)
# map()和lambda表示式
lst =[1
,2,3
,4,5
]print
(list
(map
(lambda x:x+
2, lst)
))
map()還可以同時處理多個序列。
lst1 =[1
,2,3
]lst2 =[4
,5,6
]# 返回的是迭代器
print
(list
(map
(lambda x,y: x*y, lst1, lst2)
))
標準庫functools中的 reduce()函式格式:reduce(function, iterable[, initializer])
引數:function – 函式,有兩個引數,1個是用於儲存操作的結果,另乙個是每次迭代的元素。
iterable – 可迭代物件
initializer – 可選,初始引數
from functools import
reduce
n =int
(input
("n = "))
lst =
list
(range(1
, n+1)
)res =
reduce
(lambda x,y:x*y, lst)
print
(f"! = "
)
filter()函式¶格式:filter(function, iterable)
引數:function:函式只能接收乙個引數,而且該函式的返回值為布林值。
iterable:可迭代物件,包括列表、元組、字典、集合、字串等。
功能:從乙個序列中篩出符合條件的元素,將迭代器中的每個元素作為引數傳遞給函式進行判斷,然後返回 true 或 false,最後將返回 true 的元素放到新的迭代器中。
返回值:迭代器,在使用時需要先將其轉換為列表list或者元祖tuple之後再操作。
輸出及格學生的分數,過濾掉 < 60分的
def
check_score
(score)
:if score >60:
return
true
else
:return
false
student_score =
result =
filter
(check_score, student_score.values())
# 將返回的迭代器轉為列表list或者元組
print
(list
(result)
)
生成器函式列表推導式
列表推導式可以利用 range 區間、元組、列表、字典和集合等資料型別,快速生成乙個滿足指定需求的列表。
列表推導式的語法格式如下: [表示式 for 迭代變數 in 可迭代物件 [if 條件表示式] ]
將10以內所有整數的平方寫入列表。
lst2 =
[i**
2for i in
range(1
,11)]
print
(lst2)
# 2個for迴圈
lst5 =
[(x, y)
for x in
range(5
)for y in
range(4
)]print
(lst5)
建立生成器的方法1:將列表推導式中的中括號[ ]
換成(),就是生成器表示式。
區別:列表推導式生成的是乙個列表,占用記憶體空間
生成器儲存的是生成資料的方法,占用記憶體小
列表的每乙個元素可以直接列印
生成器的元素不可以直接列印,需要通過next()、for迴圈、list()等方法來使用。
deff(
):a, b =1,
1while
true
:yield a #暫停執行,需要時再產生乙個新元素
a, b = b, a+b #序列解包,繼續生成新元素
g = f(
)#建立生成器物件
for i in
range(10
):#斐波那契數列中前10個元素
print
(g.send(
none
), end=
' ')
python生成器函式 Python 生成器函式
一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...
python 生成器函式
python 函式的定義體中有 yield 關鍵字,該函式就是生成器函式。呼叫生成器函式時,會返回乙個生成器物件。生成器函式的定義體執行完畢後,生成器物件會丟擲stopiteration 異常。def gen a print start yield 1 print starting yield 2 ...
python函式 生成器
1.生成器 是乙個特殊的迭代器 迭代的抽象層級更高 所以,擁有迭代器的特性,惰性計算資料,節省記憶體。能夠記錄下狀態,並通過next 函式,訪問下乙個狀態。具備可迭代性。但是,如果打造乙個自己的迭代器,比較複雜,需要實現很多方法 在後續的面相物件程式設計中會講解 所以,就有乙個更加優雅的方式 生成器...