遞歸
遞歸就是自己調用自己
必須要有跳出出口
案例
# 3+2+1=6
def sum_func(num):
if num == 1:
return 1
return num + sum_func(num - 1)
print(sum_func(3))
Lambda
lambda表達式的參數可有可無,函數的參數在lambada表達式中完全適用
Lambda表達式可以接受任何數量的參數但只能返回一個表達式的值
Lambda表達式也叫做匿名函數
實例
# 通函數
def fun():
return 100
print(fun())
# lambda函數
fun1 = lambda: 100
print(fun1)
print(fun1())
Lambda實現2個數相加
# 普通函數實現
def func1(a, b):
return a + b
num1 = func1(1, 2)
print(num1)
# lambda實現
num2 = lambda a, b: a + b
print(num2(1, 2))
Lambda 各個參數實例
# lambda一個參數
fun1 = lambda a: a
print(fun1("我是python"))
# lambda默認參數
fun2 = lambda a, b=10: a + b
print(fun2(10))
# lambda可變參數 *args
fun3 = lambda *args: args
print(fun3(1, 20, 30))
# lambda可變參數**kwargs
fun4 = lambda **kwargs: kwargs
print(fun4(name="zhangsan", age=18))
Lambda對字典排序
# lambda對字典排序
dicts = [
{"name": "zhangsan", "age": 16},
{"name": "lisi", "age": 18},
{"name": "wangwu", "age": 8},
{"name": "zhaoliu", "age": 23}
]
# name升序
dicts.sort(key=lambda x: x["name"])
print(dicts)
# name降序
dicts.sort(key=lambda x: x["name"], reverse=True)
print(dicts)
#age升序
dicts.sort(key=lambda x: x["age"])
print(dicts)
#age降序
dicts.sort(key=lambda x: x["age"], reverse=True)
print(dicts)
高階函數abs/round函數
# 高階函數abs函數
print(abs(-10))
# 高階函數round()四捨五入
print(round(1.2))
print(round(1.9))
使用map(func,lst)計算一個序列中的各個數字的2次方
list1 = [1, 2, 3, 4]
def func(num):
return num ** 2
reslut = map(func, list1)
print(reslut)
print(list(reslut))
reduce(func,lst):必須要有2個參數,每次func計算的結果繼續和序列的下一個元素做累計計算
注意:reduce()傳入的參數func必須接受2個參數
#reduce(func,lst):必須要有2個參數,每次func計算的結果繼續和序列的下一個元素做累計計算
#注意:reduce()傳入的參數func必須接受2個參數
import functools
list1 = [1, 2, 3, 4]
def func(x,y):
return x + y
result = functools.reduce(func,list1)
print(result)
filter():主要用於過濾序列,過濾掉不符合條件的元素,返回一個對象,如果要轉換列表,可以使用list()轉換
# filter():主要用於過濾序列,過濾掉不符合條件的元素,返回一個對象,如果要轉換列表,可以使用list()轉換
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def func(x):
return x % 2 == 0
result = filter(func,list1)
print(list(result))
將上續的高階函數全部使用拉姆達表達式簡化實現
# 使用map(func,lst)計算一個序列中的各個數字的2次方
list1 = [1, 2, 3, 4]
reslut = map(lambda num : num ** 2, list1)
print(reslut)
print(list(reslut))
# reduce(func,lst):必須要有2個參數,每次func計算的結果繼續和序列的下一個元素做累計計算
# 注意:reduce()傳入的參數func必須接受2個參數
import functools
list1 = [1, 2, 3, 4]
result = functools.reduce(lambda x, y: x + y, list1)
print(result)
# filter():主要用於過濾序列,過濾掉不符合條件的元素,返回一個對象,如果要轉換列表,可以使用list()轉換
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(lambda x: x % 2 == 0, list1)
print(list(result))
作者:阿超
原創公衆號:『Python日常筆記』,專注於 Python爬蟲等技術棧和有益的程序人生,會將一些平時的日常筆記都慢慢整理起來,也期待你的關注和阿超一起學習,公衆號回覆【csdn】優質資源。