18.07.20(lambda().sorted().filter().map().递归.二分查找)
Posted gxj742
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了18.07.20(lambda().sorted().filter().map().递归.二分查找)相关的知识,希望对你有一定的参考价值。
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(" "*n,el)
fn(fg,n+1) #继续进行相同操作 递归入口
else:
print(" "*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().递归.二分查找)的主要内容,如果未能解决你的问题,请参考以下文章
lambda匿名函数,sorted(),filter(),map(),递归函数
Python sorted函数|sorted([13,1,237,89,100],key=lambda x:len(str(x)))
Python sorted函数|sorted([13,1,237,89,100],key=lambda x:len(str(x)))