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.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使 ...
随机推荐
- VirtualBox 4.3“不能为虚拟电脑 打开一个新任务”解决方案 - 转
最近做项目因为设计不同网络,还要大家文件和数据库服务器环境,所以需要多台机器进行测试,最简单的方法当然是跑多个虚拟机了.虽然不可否认 VMware 确实强大,不过相比较起来我更喜欢功能比较简单轻省的 ...
- Java知多少(103)网络编程之IP地址和InetAddress类
Java语言的优势之一是Java程序能访问网络资源.Java提供一系列的类支持Java程序访问网络资源. TCP/IP协议和IP地址 为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是TC ...
- Android GIS +webservice
Android新手经典入门教程 Android开发教程(完全免费版) Android SDK v3.1.0 Android定位功能(一) Android定位功能(二) Android 百度地图开发(一 ...
- gSOAP 初体验
安装 由于本人使用的是 Mac OS 系统,故以 Mac OS 为例说明如何安装 gSOAP. 1)下载 gSOAP 可以在 https://sourceforge.net/projects/gsoa ...
- Go指南练习_错误
源地址 https://tour.go-zh.org/methods/20 一.题目描述 从之前的练习中复制 Sqrt 函数,修改它使其返回 error 值. Sqrt 接受到一个负数时,应当返回一个 ...
- Spark学习笔记——在集群上运行Spark
Spark运行的时候,采用的是主从结构,有一个节点负责中央协调, 调度各个分布式工作节点.这个中央协调节点被称为驱动器( Driver) 节点.与之对应的工作节点被称为执行器( executor) 节 ...
- Java8学习笔记(三)--方法引入
基本概念 格式 实例变量名 | 类名 :: 静态方法 | 实例方法 作用 简化Lambda表达式 示例 a -> System.out.println(a); <=> System. ...
- bootstrap-select 多选下拉框使用教程
http://silviomoreto.github.io/bootstrap-select/ 一.使用bootstrap-select组件时,先引用下列文件 最后一个文件 defaults-zh_C ...
- [hive] hiveql 基础操作
1. 显示当前的数据库信息 直接修改hive.site.xml ,永久显示 2. 建表,模糊显示表信息 drop table 表名称: --删除表 show tables ;--显示所有表 sh ...
- 如何在Django1.8 结合Python3.4版本中使用MySql
Python2.7时代连接MySql的MySQLdb还不支持Python3.4. pip install pymysql 最关键的一点,在站点的__init__.py文件中,我们添加如下代码: 1 i ...