面向過程程式設計和匿名函式

2022-03-18 21:43:59 字數 3293 閱讀 3670

​ 演算法是一種高效解決問題的辦法

# 需求:有乙個按照從小到大順序排列的數字列表

# 需要從該數字列表中找到我們想要的那個乙個數字

# 如何做更高效???

nums=[-3,4,7,10,13,21,43,77,89]

find_num=10

nums=[-3,4,13,10,-2,7,89]

nums.sort()

print(nums)

# 方案一:整體遍歷效率太低

for num in nums:

if num == find_num:

print('find it')

break

# 方案二:二分法

nums=[-3,4,7,10,13,21,43,77,89]

find_num=8

def binary_search(find_num,l):

print(l)

if len(l) == 0:

print('找的值不存在')

return

mid_index=len(l) // 2

if find_num > l[mid_index]:

# 接下來的查詢應該是在列表的右半部分

l=l[mid_index+1:]

binary_search(find_num,l)

elif find_num < l[mid_index]:

# 接下來的查詢應該是在列表的左半部分

l=l[:mid_index]

binary_search(find_num,l)

else:

print('find it')

binary_search(find_num,nums)

​ 程式設計思想指的就是程式設計的套路,程式設計思想本身並沒有高低之分,而在於使用者本身

優點:

複雜的問題流程化、進而簡單化

缺點:

擴充套件性非常差

方式一:(不常用)

res=(lambda x,y:x+y)(1,2)

print(res)

方式二:(可以用,但是沒有意義)

func=lambda x,y:x+y

res=func(1,2)

print(res)

匿名用於臨時呼叫一次的場景:更多的是將匿名與其他函式配合使用

salaries=

# 需求1:找出薪資最高的那個人=》lili

res=max([3,200,11,300,399])

print(res)

res=max(salaries)

print(res)#比較的是key的值

#為此我們可以定義乙個函式,來表示值

def func(k):

return salaries[k]

res=max(salaries,key=func) # 返回值=func('siry')

print(res)

#lambda k:salaries[k],以這個標準來執行

res=max(salaries,key=lambda k:salaries[k])

print(res)

# ********************====min的應用

res=min(salaries,key=lambda k:salaries[k])

print(res)

res=sorted(salaries,key=lambda k:salaries[k],reverse=true)

print(res)

l=['alex','lxx','wxx','薛賢妻']

new_l=(name+'_dsb' for name in l)

print(new_l)

res=map(lambda name:name+'_dsb',l)

print(res) # 生成器

l=['alex_sb','lxx_sb','wxx']

res=(name for name in l if name.endswith('sb'))

print(res)

res=filter(lambda name:name.endswith('sb'),l)

print(res)

from functools import reduce

res=reduce(lambda x,y:x+y,[1,2,3],10) # 16

print(res)

res=reduce(lambda x,y:x+y,['a','b','c']) # 'a','b'

print(res)

型別提示 type hinting(最低 python 為 3.5)

#python是一種強型別的動態語言

#可以:+型別,規定傳入值的型別,本質上:後是新增的提示資訊,可以根據需要填寫

#->int 規定返回值的型別

#雖然規定了傳入型別,但實際上還是可以傳入其他型別的,傳入值的規範

def register(name:str,age:int,hobbbies:tuple)->int:

print(name)

print(age)

print(hobbbies)

return 111

register(1,'aaa',[1,])

#可以新增預設值,預設值在型別後面新增

面向過程程式設計,函式式程式設計

面向過程程式設計,函式式程式設計 峰哥原創面向過程解釋 函式的引數傳入,是函式吃進去的食物,而函式return的返回值,是函式拉出來的結果,面向過程的思路就是,把程式的執行當做一串首尾相連的函式,乙個函式吃,拉出的東西給另外乙個函式吃,另外乙個函式吃了再繼續拉給下乙個函式吃。面向過程 機械式思維,流...

函式遞迴及面向過程程式設計

遞迴就是函式呼叫函式本身,然後有結束條件。一般解決無法求解但不斷靠近的值,比如利用二分法找具體的數字,漢諾塔等 讓我們舉個栗子,比如要實現0 99的和,用while迴圈為 num 0 count 0 while count 100 print count count 1 num count prin...

面向過程程式設計

目錄 二 分層實現功能 python從入門到放棄完整教程目錄 面向過程程式設計是解決問題的一種思想,相當於武林門派,武林門派之間沒有好壞之分,因此它與我們之後學習的物件導向程式設計其實沒有好壞之分。面向過程程式設計,核心是程式設計二字,過程指的是解決問題的步驟,即先幹什麼 後幹什麼 再幹什麼 然後幹...