lamda 怎麼使用javascript
#計算n的n次方 普通的函數寫
def func(n):
return n**n
print(func(10))
爲了解決一些簡單的需求而設計的一句話函數html
f = lambda n: n**n
print(f(10))
lambda代表的是匿名函數. 不須要用def來聲明, 一句話就能夠聲明出一個函數java
函數名 = lambda 參數: 返回值
注意:算法
語法: sorted(Iterable, key=None, reverse=False)
Iterable: 可迭代對象
key: 排序規則(排序函數), 在sorted內部會將可迭代對象中的每個元素傳遞給這個函
數的參數. 根據函數運算的結果進行排序
reverse: 是不是倒敘. True: 倒敘, False: 正序
看一下例子 ↓↓↓函數
lst = [1,5,3,4,6]
lst2 = sorted(lst)
print(lst) # 原列表不會改變
print(lst2) # 返回的新列表是通過排序的
#字典排序
dic = {1:'A', 3:'C', 2:'B'}
print(sorted(dic)) # 字典. 則返回排序事後的ke
lst = ["菊次郎的夏天", "越獄", "中央情報局", "忠犬小八"]
# 計算字符串長度
def func(s):
return len(s)
print(sorted(lst, key=lambda s: len(s)))
lst = [{"id":1, "name":'alex', "age":23},
{"id":2, "name":'wusir', "age":22},
{"id":3, "name":'taibai', "age":20}]
# 按照 (年齡)對學生信息進行排序
print(sorted(lst, key=lambda e: e['age']))
語法: filter(function. Iterable)
function: 用來篩選的函數. 在filter中會自動的把iterable中的元素傳遞給function. 而後
根據function返回的True或者False來判斷是否保留此項數據
看一下例子 ↓↓↓spa
lst = [1,2,3,4,5,6,7]
ll = filter(lambda x: x%2==0, lst) # 篩選全部的偶數
print(ll)
print(list(ll
lst = [{"id":1, "name":'alex', "age":18},
{"id":2, "name":'wusir', "age":16},
{"id":3, "name":'taibai', "age":17}]
fl = filter(lambda e: e['age'] > 16, lst) # 篩選年齡大於16的數據
print(list(fl))
語法: map(function, iterable) 能夠對可迭代對象中的每個元素進行映射. 分別取執行
function
看一下例子 ↓↓↓設計
計算列表中每一個元素的平方 ,返回新列表code
lit = [1,2,3,4,5]
print(list(map(lambda x: x * x,lit)))
計算兩個列表中相同位置的數據的和htm
lst1 = [1, 2, 3, 4, 5]
lst2 = [2, 4, 6, 8, 10]
print(list(map(lambda x, y: x+y, lst1, lst2)))
在函數中調用函數自己. 就是遞歸對象
def func():
print("我是誰")
func()
func()
遞歸的應用:
咱們能夠使用遞歸來遍歷各類樹形結構, 好比咱們的文件夾系統. 能夠使遞歸歸來遍歷該
文件夾中的全部文件
import os
def read(filepath, n):
files = os.listdir(filepath) # 獲取到當前⽂件夾中的全部文件
for fi in files: # 遍歷文件夾中的文件, 這⾥獲取的只是本層文件名
fi_d = os.path.join(filepath,fi) # 加入文件夾 獲取到文件夾+文件
if os.path.isdir(fi_d): # 如該路徑下的文件是文件夾
print("\t"*n, fi)
read(fi_d, n+1) # 繼續進行相同的操做
else:
print("\t"*n, fi) # 遞歸出口. 最終在這裏隱含着return
#遞歸遍歷⽬錄下全部⽂件
read('../oldboy/', 0)
二分查找. 每次可以排除掉一半的數據. 查找的效率很是高. 可是侷限性比較大. 必須是有
序序列才能夠使用二分查找
輸入一個數判斷是否在lst中出現. 若是出現請返回n所在的位置
二分查找---非遞歸算法
lst = [22, 33, 44, 55, 66, 77, 88, 99, 101, 238, 345, 456, 567, 678, 789]
left = 0
right = len(lst) -1
num = int(input("輸入一個數"))
while left<= right:
mid = (left+right) // 2
if num > lst[mid]:
left = mid + 1
elif num < lst[mid]:
right = mid - 1
else:
print("找到了")
break
else:
print("沒找到")