Python基礎知識點 高階函式

2021-10-06 16:30:16 字數 4407 閱讀 4761

lambda只是乙個表示式,函式體比def簡單很多。

lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯進去。

lambda表示式是起到乙個函式速寫的作用。允許在**內嵌入乙個函式的定義。

格式:lambda的一般形式是關鍵字lambda後面跟乙個或多個引數,緊跟乙個冒號,之後是乙個表示式。

f =

lambda x,y,z:x+y+z

print

(f(1,2

,3))

# 6my_lambda =

lambda arg : arg +

1print

(my_lambda(10)

)# 11

三元運算格式: result=值1 if x作用:三元運算,又稱三目運算,主要作用是減少**量,是對簡單的條件語句的縮寫

name =

'tom'if1

==1else

'fly'

print

(name)

# 執行結果: tom

f =lambda x:x if x %2!=

0else x +

100print

(f(10))

# 110

利用map,lambda表示式將所有偶數元素加100

l1=[11

,22,33

,44,55

]ret =

map(

lambda x:x if x %2!=

0else x +

100,l1)

print

(list

(ret)

)# 執行結果: [11, 122, 33, 144, 55]

map()函式用法:

map(function, iterable, …)

功能:

引數:

function – 函式,有兩個引數

iterable – 乙個或多個可迭代物件(如:序列)

返回值:

python 3.x 返回迭代器

# demo

deffunc

(x):

return x*x

ret =

map(func,[1

,2,3

,4,5

,6,7

,8,9

])print

(list

(ret)

)# 執行結果:[1

,4,9

,16,25

,36,49

,64,81

]

使用reduce進行求和運算

在reduce()函式中,init是可選的,如果指定,則作為第一次迭代的第乙個元素使用,如果沒有指定,就取seq中的第乙個元素。

from functools import

reduce

deff

(x, y)

:return x + y

print

(reduce

(f,[1,

3,5,

7,9]

))# 25

# 1、先計算頭兩個元素:f(1, 3),結果為4;

# 2、再把結果和第3個元素計算:f(4, 5),結果為9;

# 3、再把結果和第4個元素計算:f(9, 7),結果為16;

# 4、再把結果和第5個元素計算:f(16, 9),結果為25;

# 5、由於沒有更多的元素了,計算結束,返回結果25。

print

(reduce

(lambda x, y: x + y,[1

,3,5

,7,9

]))# 25

reduce()函式語法

reduce(function, iterable[, initializer])

功能:

引數:

function – 函式,有兩個引數

iterable – 可迭代物件

initializer – 可選,初始引數

返回值:

返回函式計算結果。

# demo:

from functools import

reduce

defadd

(x, y)

:return x + y

r =reduce

(add,[1

,3,5

,7,9

])print

(r)# 1. 執行結果:

25

利用 filter、lambda表示式 獲取l1中元素小於33的所有元素 l1 = [11, 22, 33, 44, 55]

l1=[11

,22,33

,44,55

]a =

filter

(lambda x: x<

33, l1)

print

(list

(a))

filter()函式:

filter(function, iterable)

功能

引數:

function – 判斷函式

iterable – 可迭代物件(如:序列)

返回值:

返回乙個迭代器物件

# demo:

defis_odd

(n):

return n %2==

1 tmplist =

filter

(is_odd,[1

,2,3

,4,5

,6,7

,8,9

,10])

newlist =

list

(tmplist)

print

(newlist)

# 執行結果:[1

,3,5

,7,9

]

sorted對字典排序

d =

# d.items() = [('k1', 1), ('k3', 3), ('k2', 2)]

a =sorted

(d.items(

), key=

lambda x: x[1]

)print

(a)# [('k1', 1), ('k2', 2), ('k3', 3)]

sorted()函式

sorted(iterable, key=abs, reverse=false)

功能:

引數:

iterable – 可迭代物件。

key – key指定的函式將作用於可迭代物件上的每乙個元素,並根據key函式返回的結果進行排序

reverse – 排序規則,reverse = true 降序 , reverse = false 公升序(預設)

返回值:

返回重新排序的列表

# demo:

print

(sorted([

36,5,

-12,9

,-21]

))執行結果:[-21

,-12,

5,9,

36]print

(sorted([

36,5,

-12,9

,-21]

, key=

abs)

)#abs 匿名函式

執行結果:[5,

9,-12

,-21,

36]

返回函式:

高階函式除了可以接受函式作為引數外,還可以把函式作為結果值返回。

def

lazy_sum

(*args)

:def

sum():

ax =

0for n in args:

ax = ax + n

return ax

return

sum#將定義的函式sum()作為結果值返回

f = lazy_sum(1,

3,5,

7,9)

f()

Python基礎知識點

python2與python3編碼相容性 python2如果沒有指定編碼格式,預設的編碼是ascii,不進行轉換會出現unicodedecodeerror錯誤,為了使得python2與3進行相容,可以用如下 實現 import sys from django.utils import six if ...

python基礎知識點概括

1.1.1 輸出 print 要輸出的內容 加引號,就是按照字串的格式輸出,否則就是計算之後輸出,如果要格式化輸出的話,用 隔開 1.1.2 輸入 input 提示資訊 raw input t提示資訊 都可以,讀取的內容都是字串形式,有些時候,就需要將讀取的字串轉為整數,使用int 來轉換 1.2....

Python基礎知識點(一)

編寫程式需要使用注釋,一般以 開頭 單行注釋以 開頭 多行注釋 內容 中文支援以 conding utf 8 變數 用於儲存資料 變數型別 數字型別 布林型別 true,false 字串型別 列表型別 元組型別 字典型別 檢視型別 type 變數名 1 標示符 由字母,下劃線,數字組成 且數字不能開...