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----内置函数,递归函数的更多相关文章

  1. python基础学习Day14 内置函数 匿名函数

    一.内置函数里几个高频重要函数 (1)min\max函数的用法 以min函数的为例: min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值). l1 =[(,),(, ...

  2. Python标准库:内置函数hasattr(object, name)

    Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...

  3. python字符串——"奇葩“的内置函数

      一.前言 python编程语言里的字符串与我们初期所学的c语言内的字符串还是有一定不同的,比如python字符串里的内置函数就比语言的要多得多:字符串内的书写格式也会有一点差异,例:字符串内含有引 ...

  4. python 类(object)的内置函数

    python 类(object)的内置函数 # python 类(object)的内置函数 ### 首先 #### 以__双下划线开头的内置函数 __ #### __往往会在某些时候被自动调用,例如之 ...

  5. Python开发基础-Day11内置函数补充、匿名函数、递归函数

    内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: divmod(a, b) #a.b为数字,a为除数,b ...

  6. Python学习笔记-Day3-python内置函数

    python内置函数 1.abs    求绝对值 2.all 判断迭代器中的所有数据是否都为true 如果可迭代的数据的所有数据都为true或可迭代的数据为空,返回True.否则返回False 3.a ...

  7. Python装饰器、内置函数之金兰契友

    装饰器:装饰器的实质就是一个闭包,而闭包又是嵌套函数的一种.所以也可以理解装饰器是一种特殊的函数.因为程序一般都遵守开放封闭原则,软件在设计初期不可能把所有情况都想到,所以一般软件都支持功能上的扩展, ...

  8. python学习日记(内置函数)

    目前所有内置函数 http://www.runoob.com/python3/python3-built-in-functions.html *菜鸟教程* 内置函数分类 作用域相关globals(). ...

  9. PYTHON语言之常用内置函数

    一 写在开头本文列举了一些常用的python内置函数.完整详细的python内置函数列表请参见python文档的Built-in Functions章节. 二 python常用内置函数请注意,有关内置 ...

  10. python基础 (装饰器,内置函数)

    https://docs.python.org/zh-cn/3.7/library/functions.html 1.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使 ...

随机推荐

  1. VirtualBox 4.3“不能为虚拟电脑 打开一个新任务”解决方案 - 转

    最近做项目因为设计不同网络,还要大家文件和数据库服务器环境,所以需要多台机器进行测试,最简单的方法当然是跑多个虚拟机了.虽然不可否认 VMware 确实强大,不过相比较起来我更喜欢功能比较简单轻省的 ...

  2. Java知多少(103)网络编程之IP地址和InetAddress类

    Java语言的优势之一是Java程序能访问网络资源.Java提供一系列的类支持Java程序访问网络资源. TCP/IP协议和IP地址 为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是TC ...

  3. Android GIS +webservice

    Android新手经典入门教程 Android开发教程(完全免费版) Android SDK v3.1.0 Android定位功能(一) Android定位功能(二) Android 百度地图开发(一 ...

  4. gSOAP 初体验

    安装 由于本人使用的是 Mac OS 系统,故以 Mac OS 为例说明如何安装 gSOAP. 1)下载 gSOAP 可以在 https://sourceforge.net/projects/gsoa ...

  5. Go指南练习_错误

    源地址 https://tour.go-zh.org/methods/20 一.题目描述 从之前的练习中复制 Sqrt 函数,修改它使其返回 error 值. Sqrt 接受到一个负数时,应当返回一个 ...

  6. Spark学习笔记——在集群上运行Spark

    Spark运行的时候,采用的是主从结构,有一个节点负责中央协调, 调度各个分布式工作节点.这个中央协调节点被称为驱动器( Driver) 节点.与之对应的工作节点被称为执行器( executor) 节 ...

  7. Java8学习笔记(三)--方法引入

    基本概念 格式 实例变量名 | 类名 :: 静态方法 | 实例方法 作用 简化Lambda表达式 示例 a -> System.out.println(a); <=> System. ...

  8. bootstrap-select 多选下拉框使用教程

    http://silviomoreto.github.io/bootstrap-select/ 一.使用bootstrap-select组件时,先引用下列文件 最后一个文件 defaults-zh_C ...

  9. [hive] hiveql 基础操作

    1. 显示当前的数据库信息 直接修改hive.site.xml ,永久显示 2. 建表,模糊显示表信息 drop  table   表名称: --删除表 show tables ;--显示所有表 sh ...

  10. 如何在Django1.8 结合Python3.4版本中使用MySql

    Python2.7时代连接MySql的MySQLdb还不支持Python3.4. pip install pymysql 最关键的一点,在站点的__init__.py文件中,我们添加如下代码: 1 i ...