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().递归.二分查找)的主要内容,如果未能解决你的问题,请参考以下文章

sorted() 和 lambda --> 应用:字典排序

python sorted 和 lambda结合排序 例子

再看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)))