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.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使 ...
随机推荐
- git push 失败
先上图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvV29KaWFvRGFaaG9uZw==/font/5a6L5L2T/fontsize/400/fil ...
- Sword STL迭代器prev,next相关函数
迭代器的头文件中定义了4个实现迭代器模板的函数模板. .advance(iterator,num):将迭代器iterator 移动了num个位置 .distance(iterator1,iterato ...
- Scala学习笔记——断言和单元测试
1.断言 assert(conditon)将在条件不成立的时候,抛出assertionError assert(conditon,explanation)讲在条件不成立的时候,抛出explanatio ...
- Android 使用ColorMatrix改变图片颜色
原文链接:http://blog.csdn.net/janice0529/article/details/49207939 ColorMatrix的颜色矩阵介绍 颜色矩阵M是一个5*4的矩阵,在And ...
- titlesplit
/** * Created by lkl on 2017/6/26. *///spark-shell --driver-class-path /home/hadoop/test/mysqljdbc.j ...
- vue项目在安卓低版本机显示空白原因
vue项目在安卓低版本机显示空白原因: 可能的原因一: 查看安卓debug,报错,可能有箭头函数语法错误,或者其他语法问题,那可能是ES6语法问题. 这时候需要安装babel-pollyfill. 网 ...
- asp.net mvc 3.0 知识点整理 ----- (4).asp.net mvc 3 和asp.net mvc 4 对比
asp.net mvc的版本更新很快,每个版本都在前一个版本的基础上,进行性能的优化和功能的完善和提升. 以下,便是我对比了下两个版本,发现最基本的差异.(更新补充中..) 一.关于配置类Global ...
- juypter安装使用
安装: pip install jupyter 启动: jupyter notebook 创建文件 这里的python文件格式是ipynb,可以在download as 中选择要保存的格式. 执行: ...
- 【代码审计】XYHCMS V3.5任意文件读取漏洞分析
0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...
- nodejs 单线程 高并发
nodejs为什么是单线程且支持高并发的脚本语言呢? 1.node的优点:I/O密集型处理(node的I/O请求都是异步的,如:sql查询.文件流操作.http请求……):异步I/O?顾名思义就是异步 ...