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.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使 ...
随机推荐
- C++ 智能指针一
/* 智能指针shared_ptr */ #include <iostream> #include <string> #include <memory> //智能指 ...
- java对象与map对象相互转换
/** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String ...
- UIInterfaceOrientation over iOS6 (应用旋转屏幕)
typedef NS_ENUM(NSInteger, UIInterfaceOrientation) { UIInterfaceOrientationUnknown = UIDeviceOrien ...
- [Node.js] 01 - How to learn node.js
基本概念 链接:https://www.zhihu.com/question/47244505/answer/105026648 链接:How to decide when to use Node.j ...
- MySQL 错误 1366:1366 Incorrect integer value
错误提示:General error: 1366 Incorrect integer value: '' for column 'pay_type' at row 1 (SQL: INSERT INT ...
- 【netcore入坑记】 .Net core UseRowNumberForPaging 分页报错 SQL Server 2008 R2 EntityFrameworkCore
异常环境: netcore版本:.Net Core 2.1 efcore版本:Microsoft.EntityFrameworkCore.SqlServer 2.1.1 sql sqlserver 版 ...
- IOS Https适配摸索
转:http://www.jianshu.com/p/f312a84a944c https封面 在WWDC 2016开发者大会上,苹果宣布了一个最后期限:到2017年1月1日 App Store中的所 ...
- maven子项目的springboot配置
正常来说一个maven子项目的parent是父项目,而不是直接继承,这时候就需要改下配置 默认生成的代码入下: <?xml version="1.0" encoding=&q ...
- B - Broken Keyboard (a.k.a. Beiju Text) 数组模拟链表
You're typing a long text with a broken keyboard. Well it's not so badly broken. The only problem wi ...
- Android开发实战(申明:来源于网络)
Android开发实战(申明:来源于网络) 地址:http://so.csdn.net/so/search/s.do?q=Android%E5%BC%80%E5%8F%91%E5%AE%9E%E6%8 ...