日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python记录_day14 内置函数二 迭代 二分法

發(fā)布時(shí)間:2025/3/21 python 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python记录_day14 内置函数二 迭代 二分法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、匿名函數(shù)

形式:

lambda 形參:返回值

lambda表示的是匿名函數(shù). 不需要用def來聲明, 一句話就可以聲明出一個(gè)函數(shù)。匿名函數(shù)不是說一定沒名字,而是他們的名字統(tǒng)一稱為“l(fā)ambda”,可以用__name__查看

注意:

1. 函數(shù)的參數(shù)可以有多個(gè). 多個(gè)參數(shù)之間用逗號(hào)隔開

2. 匿名函數(shù)不管多復(fù)雜. 只能寫一行, 且邏輯結(jié)束后直接返回?cái)?shù)據(jù)

3. 返回值和正常的函數(shù)一樣, 可以是任意數(shù)據(jù)類型

1 #計(jì)算n的n次方 2 f = lambda n : n**n 3 4 print(f(10))

?

二、sorted

排序函數(shù),形式? sorted(iterable, key=None, reverse = False)??

iterrable :要進(jìn)行排序的可迭代對(duì)象

key:相當(dāng)于排序規(guī)則,在sorted內(nèi)部會(huì)將可迭代對(duì)象的每一個(gè)元素傳遞給這個(gè)函數(shù),根據(jù)函數(shù)的運(yùn)算結(jié)果進(jìn)行排序

reverse: 升序還是降序,False是升序,True是降序

1 lst = ["將夜","擇天記","斗破蒼穹","武動(dòng)乾坤"] 2 3 s = sorted(lst, key= lambda el : len(el), reverse = False) #按電視劇名的長(zhǎng)度排序 4 5 print(s)

?

三、filter

篩選函數(shù),形式 filter(function , iterable )?

function:篩選規(guī)則,將iterable的每一個(gè)元素傳遞給這個(gè)函數(shù),根據(jù)function返回的True或者False來判斷是否保留此項(xiàng)數(shù)據(jù)

llst = ["將夜","擇天記","斗破蒼穹","武動(dòng)乾坤"]s = filter( lambda el : len(el)>3,lst) #按電視劇名的長(zhǎng)度排序 for el in s:print(el)結(jié)果: 斗破蒼穹 武動(dòng)乾坤

?

四、map

映射函數(shù) 形式 map(function , iterable)

function:映射規(guī)則,分別取iterable中的每一個(gè)元素,傳遞給函數(shù)執(zhí)行,得到新的數(shù)據(jù)

1 #列表中每個(gè)元素的平方組成新列表 2 lst = [2,4,6,8,10] 3 num = map(lambda x:x*x,lst) 4 5 for el in num : 6 print(el)

?

五、遞歸

在函數(shù)中調(diào)用函數(shù)本身,就是遞歸(自己調(diào)用自己)

遞歸的最大深度是1000,但是一般都取不到

遞歸關(guān)鍵的是找到遞歸入口和遞歸出口

應(yīng)用:使用遞歸遍歷文件夾系統(tǒng)(遞歸可以用來遍歷各種樹形結(jié)構(gòu))

1 def func(path, ceng) 2 lst = os.listdir(path) # 打開一個(gè)文件夾. 獲取到文件夾內(nèi)的所有內(nèi)容 3 for el in lst: # 當(dāng)前文件夾內(nèi)的所有的文件名(包括文件夾名字) 4 file_real_path = os.path.join(path, el) # 拼接文件的真實(shí)路徑 5 # 判斷這個(gè)路徑是文件還是文件夾 6 if os.path.isdir(file_real_path): 7 # 遞歸的入口 8 print("\t"*ceng, el) 9 func(file_real_path,ceng+1) # 重新執(zhí)行剛才的操作 10 11 else: # 不是文件夾, 是文件 12 # 遞歸的出口 13 print("\t"*ceng, el) 14 15 func("D:/PyCharm/workspace/周作業(yè)",0) #調(diào)用函數(shù)

?

六、二分法

二分查找:每次能夠排除掉一半的數(shù)據(jù),查找的效率非常高。 但是局限性比較大, 必須是有序序列才可以使用二分查找。

1 #查找列表中是否存在n 2 lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963] 3 4 #普通查找 5 def func(): 6 n =input(">>") 7 for el in lst: 8 if el == int(n): 9 return True 10 else: 11 return False 12 13 # print(func()) 14 15 #判斷列表中是否存在n 16 #二分查找---非遞歸 17 n = int(input(">>")) 18 left = 0 #左邊界 19 right = len(lst)-1 #右邊界 20 while left<=right: #左邊界小于等于右邊界進(jìn)入循環(huán) 21 mid = (left+right)//2 #取商的整數(shù) 22 if n < lst[mid]: #判斷你的數(shù)字和中間數(shù)大小 23 right = mid-1 #右邊界往左移 24 elif n >lst[mid]: 25 left = mid+1 #左邊界往右移 26 else: 27 print("找到了") 28 break 29 else: # 左邊界大于右邊界退出循環(huán) 30 print("找不到") 31 #二分查找---遞歸 32 def digui(n,left,right): 33 if left <= right: 34 mid = (left +right)//2 35 if n < lst[mid]: 36 right = mid -1 37 elif n > lst[mid]: 38 left = mid +1 39 else: 40 print("找到了") 41 return True 42 #digui(n, left, right) 43 return digui(n, left, right) # 不寫return,返回值始終為None 44 else: 45 return -1 46 ret = digui(56,0,len(lst)-1) 47 print(ret) 48 49 #二分查找 ----遞歸(切列表) 50 def binary_search(lst,n): 51 left = 0 52 right = len(lst)-1 53 if left >right: 54 print("找不到") 55 mid = (left + right)//2 56 if n < lst[mid]: 57 #binary_search(lst[:mid], n) 58 return binary_search(lst[:mid],n) # 不寫return,返回值會(huì)始終為None 59 elif n > lst[mid]: 60 #binary_search(lst[mid + 1:], n) 61 return binary_search(lst[mid+1: ],n) 62 else: 63 print("找到了") 64 return True 65 ret = binary_search(lst,56) 66 print(ret) 示例

?

轉(zhuǎn)載于:https://www.cnblogs.com/zhang-yl/p/9911049.html

總結(jié)

以上是生活随笔為你收集整理的python记录_day14 内置函数二 迭代 二分法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。