python摸爬滚打之day14----内置函数,递归函数
1、匿名函数
用一句话实现的简单函数.
ret = lambda x : x ** 2 即 函数名 = lambda 形参 : 返回值
print(ret(5)) ----> 25
2、sorted() ----> 排序函数
sorted(iterable, key=func,reverse=False)
将可迭代对象的每一个元素传递给func, 然后根据func的返回值进行排序, reverse默认为False.
lst = [ {'id':1,'name':'alex','age':28},
{'id':2,'name':'taibai','age':58},
{'id':3,'name':'taihei','age':18},
{'id':4,'name':'henhei','age':38}]
ret = sorted(lst,key=lambda x: x["age"]) #按年龄排序
print(ret)
sorted()
max() ----> 寻找最大值
max(iterable, key=func)
将可迭代对象的每一个元素传递给func, 根据lambda函数给出的规则进行寻找最大值.
dic = [
{"name":"小明","age":135},
{"name":"芳华","age":216},
{"name":"罗密欧","age":98},
{"name":"韩梅梅","age":385},
{"name":"朱丽叶","age":226},
] print(max(dic,key=lambda i:i["age"])) # {'name': '韩梅梅', 'age': 385}
max()
3、filter() ----> 筛选函数
filter(func,iterable)
将可迭代对象的每一个元素传递给func, 然后根据func的返回值对可迭代对象的元素进行处理, 筛选出返回值为True的元素, filter结果是一个filter对象(迭代器), 用list().
lst = [ {'id':1,'name':'alex','age':28},
{'id':2,'name':'taibai','age':58},
{'id':3,'name':'taihei','age':18},
{'id':4,'name':'henhei','age':38}]
print(list(filter(lambda x: x["age"] > 20, lst))) # 将年龄超过20岁的筛除 # [{'id': 1, 'name': 'alex', 'age': 28},
# {'id': 2, 'name': 'taibai', 'age': 58},
# {'id': 4, 'name': 'henhei', 'age': 38}]
filter()
4、map() ----> 映射函数
map(func, iterable)
将可迭代对象的每一个元素传递给func, 进行统一操作, 并返回一个新列表. map结果是一个map对象(迭代器), 用list().
lst = [ {'id':1,'name':'alex','age':28},
{'id':2,'name':'taibai','age':58},
{'id':3,'name':'taihei','age':18},
{'id':4,'name':'henhei','age':38}]
print(list(map(lambda x: x["age"] - 5,lst))) # 执行结果是一个新列表 # [23, 53, 13, 33]
map()
5、reduce() ----> 累积函数
import functools import reduce
reduce(func, iterable)
将可迭代对象的前后两个参数传给func, 进行函数操作, 然后将前后两个参数运算得到的结果作为第一个参数, 列表的后一个参数作为第二个参数, 继续往复func的操作, 得到的是一个具体的结果.
print(reduce(lambda x,y: x + y,range(1,10),100))
# 100作为起始值 #
reduce()
6、递归
即 自身调用自身. 递归的最大递归深度为1000次, 但是永远达不到1000.
注意: 函数在函数体内部调用自身时, 也会创建一个新的名称空间, 递归次数越多, 则占据的空间内存就越大, 能不用递归就不用递归. 所以函数体内一定要有return 返回值, 不然拿到的结果为(None).
def func(n):
if n == 1:
return 1
return n * func(n - 1) # 用递归实现阶乘 print(func(10))
递归实现阶乘
def ck_file(path,ceng):
lst = os.listdir(path)
for i in lst:
file_path = os.path.join(path,i)
if os.path.isdir(file_path):
print("\t" * ceng,i,sep="") # sep="" 当输入多个值进行打印时, 各个值之间的分隔方式.
ck_file(file_path,ceng + 1)
else:
print("\t" * ceng,i,sep="") ck_file("F:/a",0)
递归实现文件夹的读取
7、用二分法实现查找某元素(重中之重)
优点 : 效率会非常高, 每次能够排除掉一半的数据.
缺点 : 前提是列表为有序列表.
一: 普通,非递归,非列表切片
lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963] left = 0
right = len(lst)-1
inp = int(input("输入数字: "))
while left <= right:
mid = (left + right ) // 2
if inp > lst[mid]:
left = mid + 1
elif inp < lst[mid]:
right = mid - 1
else:
print("列表中有此数")
break
else:
print("列表中没有此数")
非递归, 非列表切片
二: 递归, 非列表切片
lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963]
def ck(n,l,r,lst):
if l > r:
return False
mid = (l + r) // 2
if n > lst[mid]:
l = mid+1
return ck(n,l,r,lst)
elif n < lst[mid]:
r = mid-1
return ck(n,l,r,lst)
else:
return True
numb = int(input("输入数字: "))
print(ck(numb,0,len(lst),lst))
递归, 非列表切片
三: 递归, 列表切片
def func(lst,n):
if not lst:
return False
left = 0
right = len(lst)-1
mid = (left + right) // 2
if n > lst[mid]:
lst = lst[mid + 1:]
return func(lst,n)
elif n < lst[mid]:
lst = lst[ : mid]
return func(lst, n)
else:
return True
numb = int(input("输入数字: "))
print(func(lst,numb))
递归, 列表切片
python摸爬滚打之day14----内置函数,递归函数的更多相关文章
- python基础学习Day14 内置函数 匿名函数
一.内置函数里几个高频重要函数 (1)min\max函数的用法 以min函数的为例: min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值). l1 =[(,),(, ...
- Python标准库:内置函数hasattr(object, name)
Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...
- python字符串——"奇葩“的内置函数
一.前言 python编程语言里的字符串与我们初期所学的c语言内的字符串还是有一定不同的,比如python字符串里的内置函数就比语言的要多得多:字符串内的书写格式也会有一点差异,例:字符串内含有引 ...
- python 类(object)的内置函数
python 类(object)的内置函数 # python 类(object)的内置函数 ### 首先 #### 以__双下划线开头的内置函数 __ #### __往往会在某些时候被自动调用,例如之 ...
- Python开发基础-Day11内置函数补充、匿名函数、递归函数
内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: divmod(a, b) #a.b为数字,a为除数,b ...
- Python学习笔记-Day3-python内置函数
python内置函数 1.abs 求绝对值 2.all 判断迭代器中的所有数据是否都为true 如果可迭代的数据的所有数据都为true或可迭代的数据为空,返回True.否则返回False 3.a ...
- Python装饰器、内置函数之金兰契友
装饰器:装饰器的实质就是一个闭包,而闭包又是嵌套函数的一种.所以也可以理解装饰器是一种特殊的函数.因为程序一般都遵守开放封闭原则,软件在设计初期不可能把所有情况都想到,所以一般软件都支持功能上的扩展, ...
- python学习日记(内置函数)
目前所有内置函数 http://www.runoob.com/python3/python3-built-in-functions.html *菜鸟教程* 内置函数分类 作用域相关globals(). ...
- PYTHON语言之常用内置函数
一 写在开头本文列举了一些常用的python内置函数.完整详细的python内置函数列表请参见python文档的Built-in Functions章节. 二 python常用内置函数请注意,有关内置 ...
- python基础 (装饰器,内置函数)
https://docs.python.org/zh-cn/3.7/library/functions.html 1.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使 ...
随机推荐
- Android ShareUserId 使用总结
今天讲一下Android里面经常看到却不太留意的知识点——ShareUserId,在Android里面每个app都有一个唯一的linux user ID,则这样权限就被设置成该应用程序的文件只对该用户 ...
- C++ 成员函数赋值给C 的函数指针的采坑录
最近做一个banana Pi M1+的硬解码器封装成类的时候,由于是依赖ffmpeg的,而ffmpeg是C 实现的,本来demo 都是直接用C写的,测试也没有问题,想着封装也不会有问题,至少自己对C+ ...
- .net core实现跨域
什么是跨域在前面已经讲解过了,这里便不再讲解,直接上代码. 一.后台API接口 用.net core创建一个Web API项目负责给前端界面提供数据. 二.前端界面 建立两个MVC项目,模拟不同的ip ...
- [Object Tracking] Deep Boundary detection Tech
AR的要点之一便是精确跟踪 From: https://zhuanlan.zhihu.com/p/26848831?refer=dlclass Boundary Detection Benchmark ...
- Win 10来袭,人工智能女将打头阵
7月1日,微软小冰身"考官",其姐姐微软小娜(Cortana)解锁"科技动态"功能,为即将来临的Win 10打头阵. 中国IT产业界从来没有见过这样的阵势,难于 ...
- yum安装VirtualBox
参考官方文档: https://www.virtualbox.org/wiki/Linux_Downloads 配置yum源: vim /etc/yum.repos.d/virtualbox.repo ...
- 导入日志文件到mysql数据库表
#!/bin/bash #**************************************************************************** #***将/usr/ ...
- 深入理解 Java 虚拟机之学习笔记(2)
本节介绍 Java堆的OutOfMemoryError测试 Eclipse Memory Analyzer分析内存溢出 虚拟机栈和本地方法栈StackOverflowError测试 方法区和运行时常量 ...
- web -- Navigator.vibrate(); 使设备(有振动硬件)产生有频率的振动
MDN 文档 此方法需要用户手势. 否则,它返回false. const koa2 = require(`koa2`); const Router = require(`koa-router`); c ...
- maven 配置mirror后,本地库与远端库冲突
settings.xml中主要包括以下元素: localRepository interavtiveMode offline pluginGroups proxies servers mirrors ...