1. 程式人生 > >18.07.20(lambda().sorted().filter().map().遞歸.二分查找)

18.07.20(lambda().sorted().filter().map().遞歸.二分查找)

XML 語法 map() 打開文件 任意數據類型 結構 深度 樹形 int

1.lambda() 匿名函數

lambda表示的是匿名函數,不需要用def來聲明,一句話就可以聲明一個函數

語法:函數名 = lambda 參數:返回值

註意:

(1)參數可以有多個,多個參數用逗號隔開

(2)匿名函數不管多復雜.只寫一行.且邏輯結束後直接返回數據

(3)返回值和正常函數一樣1,可以是任意數據類型

我們通過__name__()查看函數名字

例:

a = lambda x : x * x
print(a(5)) ==>25
print(a.__name__) ==><lambda>

例:

a = lambda x,y : x * 2 + y
print(a(2,8)) ==>12

2.sorted 排序函數

語法:sorted(iterable,key=None,reverse=False) 在sorted內部會將可叠代對象中的每一個元素傳遞給這個函數的參數.根據函數的運算結果進行排序 reverse是否倒序

例:

lst = ["sdef","efg","c","sfrgrg"]
l = sorted(lst,key= lambda s : len(s))
print(l) ==>[‘c‘, ‘efg‘, ‘sdef‘, ‘sfrgrg‘]

例:

lst = [{"name":"小花","age":6},
{"name":"jan","age":14},
{"name":"笨笨","age":4},
{"name":"曼曼","age":10}]
ll = sorted(lst,key = lambda dic:dic["age"])
print(ll)
結果:[{‘name‘: ‘笨笨‘, ‘age‘: 4}, {‘name‘: ‘小花‘, ‘age‘: 6}, {‘name‘: ‘曼曼‘, ‘age‘: 10}, {‘name‘: ‘jan‘, ‘age‘: 14}]

3.filter篩選函數

語法:filter(function,iterable) function:用來篩選的函數,在filter中會自動把iterable中的元素傳遞給function,然後根據function返回的True或False來判斷是否保留此項數據.iterable:可叠代對象

例:

def fn(i):
return i % 2 ==1
lst = [1,2,3,4,5,6,7,8,9]
ll = filter(fn ,lst)
print(list(ll)) ==>[1, 3, 5, 7, 9]

例:

lst = [1,2,3,4,5,6,7,8,9]
ll = filter(lambda i : i % 2 == 1 , lst)
print(list(ll)) ==>[1, 3, 5, 7, 9]

例:

lst = [{"id":1,"name":"alex","age":18},
{"id":2,"name":"taibai","age":58},
{"id":3,"name":"wusir","age":38},
{"id":4,"name":"ritian","age":48},
{"id":5,"name":"女神","age":18},]
ll = filter(lambda dic:dic["age"]<40 ,lst)
print(list(ll))
結果:[{‘id‘: 1, ‘name‘: ‘alex‘, ‘age‘: 18}, {‘id‘: 3, ‘name‘: ‘wusir‘, ‘age‘: 38}, {‘id‘: 5, ‘name‘: ‘女神‘, ‘age‘: 18}]

4.map映射函數

語法:map(function,iteration) 可以對可叠代對象中的每一個元素進行映射.分別執行function

例:

lst = [1,2,3,4,5]
it = map(lambda i:i*i,lst)
print(list(it)) ==>[1, 4, 9, 16, 25]

例:

lst1 = [1,2,3,4,5]
lst2 = [6,7,8,9,10]
print(list(map(lambda x,y:x+y,lst1, lst2))) ==>[7, 9, 11, 13, 15]

5.遞歸

在函數中調用函數本身.就是遞歸

例:

def fn():
print("我是誰?")
fn()
fn()

在python中遞歸的深度最大到998

遞歸應用:遍歷樹形結構,例如系統中的文件夾系統

例:

import os
filePath = "F:\python作業" #獲取當前文件夾位置
def fn(filePath,n):
it = os.listdir(filePath) #打開文件夾
for el in it: #遍歷文件夾中的文件夾
fg = os.path.join(filePath,el) #加入文件夾 獲取到絕對路徑
if os.path.isdir(fg): #判斷該路徑下文件是文件夾
print("\t"*n,el)
fn(fg,n+1) #繼續進行相同操作 遞歸入口
else:
print("\t"*n,el) #遞歸出口
fn(filePath,0)
結果:
.idea
inspectionProfiles
misc.xml
modules.xml
python作業.iml
workspace.xml
18.07.02
day1.py
day1作業及默寫.pdf
18.07.03
day2.py
day2作業.pdf
作業.py

18.07.20(lambda().sorted().filter().map().遞歸.二分查找)