python之高階函式

2021-09-10 15:13:12 字數 3841 閱讀 9140

abs與abs()的區別

abs() # 返回值

abs # 返回整個函式

# 求絕對值

print('求出來的絕對值為:',abs(-11))

# 函式本身可以賦值給變數,變數也可以指向函式

# 呼叫函式來求絕對值

f=abs

print('求出來的絕對值為:',f(-10))

# 傳遞的函式包括函式名

def fun(x,y,f):

return f(x),f(y)

print('求出來的絕對值為:',fun(-10,34,abs))

(1)a.map()函式練習

import random

# 對於序列[-1,3,-5,-4]的每個元素求絕對值

print(list(map(abs,[-1,3,-5,-4])))

# 對於序列的每個元素求階乘(10個,2~7之間的隨機)

for n in range(10):

n=random.randint(2,7)

def jc(n):

sum = 1

for i in range(1,n+1):

sum*=i

return sum

li=[random.randint(2,7)

for i in range(10)]

print(list(map(jc,li)))

(2)filter函式

# 求1~100之間的偶數

def isodd(num):

if num % 2 == 0:

return true

else:

return false

print(list(filter(isodd,range(100))))

# 求1~100之間的素數

(4)sorted函式

# 呼叫排序方法sort進行排序

li = [5,2,4,2,3]

li.sort()

# 這是逆序

li.sort(reverse=true)

print(li)

# 使用sorted函式進行排序(逆序)

a=sorted(li,reverse=true)

print(a)

# 分別根據商品的數量,**和名稱對商品進行排序

# 預設按照商品名稱進行排序

print(sorted(info))

# 按照商品數量進行排序

def sorted_count(x):

return x[1]

print(sorted(info,key=sorted_count))

# 按照商品**進行排序

def sotred_price(x):

return x[2]

print(sorted(info,key=sotred_price))

# 先按照商品數量進行排序,如果數量一樣,就按照商品**進行排序

練習

在原始陣列上進行操作,勿建立新的陣列

輸入:第一行是陣列長度4 0 7 0 2

輸出:調整後陣列的內容4 7 2 0 0

# 定義使用者輸入的變數

n = ''.join(input('請輸入:').split())

# 接收使用者的輸入為列表

li = [int(i) for i in n ]

def sorted_li(i):

# 把列表中的零元素用1代替

if i == 0:

return 1

# 把列表中非零元素用0代替

else:

return 0

# 按照返回值對列表中元素進行排序

print(sorted(li,key=sorted_li))

求平方求階乘

匿名函式的預設引數

匿名函式的可變引數

關鍵字引數

from functools import reduce

# 用reduce呼叫匿名函式實現x+y

print(reduce(lambda x,y:x+y,[1,2,3,4,5]))

# 用map呼叫匿名函式實現x**2

print(list(map(lambda x:x**2,range(10))))

# 用匿名函式求階乘

print('求得10的階乘為:',reduce(lambda x,y:x*y,range(1,10)))

# 匿名函式的預設引數

f = lambda

x,y=2:x**y # 一定要把匿名函式賦值給乙個變數,不然不能呼叫

print('求3的平方:',f(3)) # 沒有指定,所以用預設引數2

print('求2的4次方為:',f(2,4)) # 指定預設引數為4,所以4代替預設引數

# 匿名函式的可變引數

f= lambda *args:sum(args)

print('求得的序列的和為:',f(1,34,32,43,1,))

# 匿名函式的關鍵字引數

f1 = lambda **kwargs:kwargs.keys() # 定義匿名函式輸出key值

f2 = lambda **kwargs:kwargs.values() # 定義匿名函式輸出value值

print('輸出key值為:',f1(name='lala',age=18))

print('輸出value值為:',f2(name='lala',age=18))

練習

nums = [0 ,7 ,0 ,1 ,2 ,1 ,5 ,1 ,7 ,8 ,0 ,67 ,1 ,3 ,4],把0排到最後,其餘數字不用排序
nums = [0 ,7 ,0 ,1 ,2 ,1 ,5 ,1 ,7 ,8 ,0 ,67 ,1 ,3 ,4]

print(sorted(nums,key=lambda x:1 if x == 0 else 0))

Python之高階函式

一 什麼是高階函式 函式作為實參傳遞給函式的或者函式名為返回值的函式稱為高階函式。1 實參傳遞給函式 2 函式名為返回值 二 系統內建的高階函式 1 map函式 至少需要兩個引數,第乙個引數是函式名,第二個引數是序列 str,list,tuple map功能 把序列中的每乙個元素作為引數,傳給函式進...

Python之高階函式

做過swift開發的童鞋都知道,在swift中有許多的高階函式 map,filter,reduce,zip等 這些在開發中讓我們節省大量 python中同樣有許多的內建函式,但是這裡也只介紹幾個常用的高階函式 根據提供的函式對指定序列做對映,並返回對映後的序列 map function,iterab...

python之高階函式

函式程式設計及其優勢 無 不修改狀態,表示式形式,專注與計算,接近自然語言。便於 熱公升級,無狀態不用考慮併發過程中的資源搶占及鎖問題。函式也是物件,也可以賦值給變數,當然函式的引數也可以為另一函式。map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依...