python 高階函式 字串的補充

2021-09-02 22:40:16 字數 3864 閱讀 1576

變數可以指向函式,函式的引數可以接收變數,那麼函式可以接收另乙個函式作為引數,這種函式稱為高階函式

(1)函式本身也可以賦值給變數 變數可以指向函式

print(abs(-11))         ##abs函式:求絕對值

f = abs

print(f(-10))

(2)傳遞的引數包含函式名

def fun(x,y,f):

return f(x),f(y)

print(fun(-10,34,abs))

(1)map函式

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

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

# 對於序列的每個元素求階乘

def factoria(x):

"""對與x求階乘"""

res = 1

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

res = res * i

return res

li = [random.randint(2,7) for i in range(10)]

print(list(map(factoria,li)))

(2)reduce函式

from functools import reduce

def multi(x,y): ##1*2*3*4

return x*y

print(reduce(multi,range(1,4)))

def add(x,y): ##1+2+3+4+5

return x+y

print(reduce(add,[1,2,3,4,5]))

(3)filter函式

# 取出偶數

def isodd(num):

if num %2==0:

return true

else:

return false

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

#1~100的素數

def fun(x):

for i in range(2,x):

if x%i==0 :

return false

return true

print(list(filter(fun,range(2,100))))

(4)sorted函式

li = [1,2,4,6,3]

li.sort() ##在原列表基礎上排序

print(li)

a = sorted(li) ##建立新列表放置排序後的元素

print(a)

a = sorted(li,reverse=true) ##從大到小排序

print(a)

info = [

# 商品名稱 商品數量 商品**

]# print(sorted(info))

# 按照商品數量進行排序

def sorted_by_count(x):

return x[1]

# 按照商品**進行排序

def sorted_by_price(x):

return x[2]

# 先按照商品數量由小到大進行排序,如果商品數量一致,則按照商品**由小到大進行排序

def sorted_by_count_price(x):

return x[1], x[2]

# key代表排序的關鍵字

# print(sorted(info,key=sorted_by_count))

# print(sorted(info,key=sorted_by_price))

print(sorted(info, key=sorted_by_count_price))

# 對於字典裡面巢狀字典進行排序

d = ,

'002':

}print(d.items())   #[('key',{}),(),()]

print(sorted(d.items(),key=lambda x:x[1]['count']))

print(sorted(d.items(),key=lambda x:x[1]['price']))

(5)lambda匿名函式

from functools import reduce

1.def fun(*args, **kwargs): ##返回元組,返回字典

return args, kwargs

## 兩種效果一樣

print(lambda *args, **kwargs: (args, kwargs))

2.def add(x, y):

return x + y

print(add([1,2,3,4]))

## 兩種效果一樣

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

3.def mypow(x):

return x ** 2

## 兩種效果一樣

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

def is_odd(num):

return num %2 ==0

## 兩種效果一樣

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

4.info = [

# 商品名稱 商品數量 商品**

]print(sorted(info))

# 按照商品數量進行排序

# print(sorted(info,key=lambda x:x[1]))

# 按照商品**進行排序

# print(sorted(info,key=lambda x:x[2]))

# print(sorted(info,key=lambda x:(x[1],x[2])))

python內建:

from operator import itemgetter

# 按照商品數量進行排序

print(sorted(info,key=itemgetter(1)))

print(sorted(info,key=itemgetter(2)))

print(sorted(info,key=itemgetter(1,2)))

##如何快速生成驗證碼,快速生成內推碼

import random

import string

code_str = string.ascii_letters + string.digits ##小寫字母a~b+大寫字母a~b+數字0~9

print(code_str)

def gen_code(len):

# code = ''

# for i in range(len):

# new_s = random.choice(code_str)

# code += new_s

# print(code)

return ''.join(random.sample(code_str,len))

#print([gen_code(6) for i in range(100)])

print([gen_code(8) for i in range(1000)])

高階的字串函式

2.1 strpbrk 原型 char strpbrk const char s,const char accept 描述 strpbrk 函式在字串s中查詢字串accept中的任一字元第一次出的位置 返回值 返回指向s中乙個字元的指標,該字元是第乙個與accept中乙個字元匹配的字元。如果沒有匹配...

Python關於字串的內建函式 字串操作)

環境 python3.6.4 1.字串首字母大寫 capitalize s atlan print s.capitalize atlan2.字串全大寫 upper s atlan print s.upper atlan3.字串全小寫 lower s atlan print s.lower atlan...

python 內建函式字串操作

str1 hello,world 通過內建函式len計算字串的長度 print len str1 13 獲得字串首字母大寫的拷貝 print str1.capitalize hello,world 獲得字串每個單詞首字母大寫的拷貝 print str1.title hello,world 獲得字串變...