演算法是一種高效解決問題的辦法
# 需求:有乙個按照從小到大順序排列的數字列表
# 需要從該數字列表中找到我們想要的那個乙個數字
# 如何做更高效???
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從入門到放棄完整教程目錄 面向過程程式設計是解決問題的一種思想,相當於武林門派,武林門派之間沒有好壞之分,因此它與我們之後學習的物件導向程式設計其實沒有好壞之分。面向過程程式設計,核心是程式設計二字,過程指的是解決問題的步驟,即先幹什麼 後幹什麼 再幹什麼 然後幹...