1. lambda匿名函数
lambda 就是为了解决一些简单的需求而设定的一句话函数
举例:
计算一个数的平方:
用函数写:def func(n):
return n*n
用匿名函数写:f = lanbda n: n*n
语法:函数名 = lambda 参数: 函数体
注意:
1. 函数的参数可以有多个. 多个参数之间用逗号隔开
2. 匿名函数不管多复杂. 只能写一行, 且逻辑结束后直接返回数据
3. 返回值和正常的函数一样, 可以是任意数据类型
2. sorted()
排序函数.
语法: sorted(Iterable, key=None, reverse=False)
lterable 可以迭代的对象
key 排序规则,可以用函数写,也可以用匿名函数写.根据自己具体需要排序的要求
reverse 是否需要倒序,如果写True,默认是False
举例:lst = [1,5,6,9,2,3,8]
lst2= sorted(lst) #打印结果是 1,2,3,5,6,8,9
3. filter()
语法: filter(function. Iterable)
function: 用来筛选的函数. 在filter中会自动动的把iterable中的元素传递给function. 然后
根据function返回的True或者False来判断是否保留此项数据
lterable:可迭代对象
lst = [1,2,3,4,5,6,7]
ll = filter(lambda x: x%2==0, lst) # 筛选所有的偶数
print(ll) #直接打印是内存地址
print(list(ll)) #[2,4,6]
4. map()
映射函数
语法: map(function, iterable) 可以对可迭代对象中的每一个元素进行映射. 分别取执值function
举例:
def func(e):
return e*e
mp = map(func, [1, 2, 3, 4, 5])
print(mp) #执行也是一串内存地址
print(list(mp)) #装进列表后每一个元素的平方
5. 递归函数
递归函数的本意就是函数就是函数里面调用本身
注意要有文件的入口以及出口,如果一直调用的话,会进行死循环,并且到达pycharm深度后会报错.
举例:
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)
return read(fi_d, n+1) # 继续进行相同的操作
else:
print("\t"*n, fi) # 递归出口. 最终在这里隐含着return
read('../oldboy/', 0) #递归遍历文件下的所有文件名