一、匿名函数

形式:

lambda 形参:返回值

lambda表示的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数。匿名函数不是说一定没名字,而是他们的名字统一称为“lambda”,可以用__name__查看

注意:

1. 函数的参数可以有多个. 多个参数之间用逗号隔开

2. 匿名函数不管多复杂. 只能写一行, 且逻辑结束后直接返回数据

3. 返回值和正常的函数一样, 可以是任意数据类型

 #计算n的n次方
f = lambda n : n**n print(f(10))

二、sorted

排序函数,形式  sorted(iterable, key=None, reverse = False)

iterrable :要进行排序的可迭代对象

key:相当于排序规则,在sorted内部会将可迭代对象的每一个元素传递给这个函数,根据函数的运算结果进行排序

reverse: 升序还是降序,False是升序,True是降序

 lst = ["将夜","择天记","斗破苍穹","武动乾坤"]

 s = sorted(lst, key= lambda el : len(el), reverse = False) #按电视剧名的长度排序

 print(s)

三、filter

筛选函数,形式 filter(function , iterable )

function:筛选规则,将iterable的每一个元素传递给这个函数,根据function返回的True或者False来判断是否保留此项数据

llst = ["将夜","择天记","斗破苍穹","武动乾坤"]

s = filter( lambda el : len(el)>3,lst) #按电视剧名的长度排序
for el in s:
print(el) 结果:
斗破苍穹
武动乾坤

四、map

映射函数 形式 map(function , iterable)

function:映射规则,分别取iterable中的每一个元素,传递给函数执行,得到新的数据

 #列表中每个元素的平方组成新列表
lst = [2,4,6,8,10]
num = map(lambda x:x*x,lst) for el in num :
print(el)

五、递归

在函数中调用函数本身,就是递归(自己调用自己)

递归的最大深度是1000,但是一般都取不到

递归关键的是找到递归入口和递归出口

应用:使用递归遍历文件夹系统(递归可以用来遍历各种树形结构)

 def func(path, ceng)
lst = os.listdir(path) # 打开一个文件夹. 获取到文件夹内的所有内容
for el in lst: # 当前文件夹内的所有的文件名(包括文件夹名字)
file_real_path = os.path.join(path, el) # 拼接文件的真实路径
# 判断这个路径是文件还是文件夹
if os.path.isdir(file_real_path):
# 递归的入口
print("\t"*ceng, el)
func(file_real_path,ceng+1) # 重新执行刚才的操作 else: # 不是文件夹, 是文件
# 递归的出口
print("\t"*ceng, el) func("D:/PyCharm/workspace/周作业",0) #调用函数

六、二分法

二分查找:每次能够排除掉一半的数据,查找的效率非常高。 但是局限性比较大, 必须是有序序列才可以使用二分查找。

 #查找列表中是否存在n
lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963] #普通查找
def func():
n =input(">>")
for el in lst:
if el == int(n):
return True
else:
return False # print(func()) #判断列表中是否存在n
#二分查找---非递归
n = int(input(">>"))
left = 0 #左边界
right = len(lst)-1 #右边界
while left<=right: #左边界小于等于右边界进入循环
mid = (left+right)//2 #取商的整数
if n < lst[mid]: #判断你的数字和中间数大小
right = mid-1 #右边界往左移
elif n >lst[mid]:
left = mid+1 #左边界往右移
else:
print("找到了")
break
else: # 左边界大于右边界退出循环
print("找不到")
#二分查找---递归
def digui(n,left,right):
if left <= right:
mid = (left +right)//2
if n < lst[mid]:
right = mid -1
elif n > lst[mid]:
left = mid +1
else:
print("找到了")
return True
#digui(n, left, right)
return digui(n, left, right) # 不写return,返回值始终为None
else:
return -1
ret = digui(56,0,len(lst)-1)
print(ret) #二分查找 ----递归(切列表)
def binary_search(lst,n):
left = 0
right = len(lst)-1
if left >right:
print("找不到")
mid = (left + right)//2
if n < lst[mid]:
#binary_search(lst[:mid], n)
return binary_search(lst[:mid],n) # 不写return,返回值会始终为None
elif n > lst[mid]:
#binary_search(lst[mid + 1:], n)
return binary_search(lst[mid+1: ],n)
else:
print("找到了")
return True
ret = binary_search(lst,56)
print(ret)

示例

python记录_day14 内置函数二 迭代 二分法的更多相关文章

  1. 百万年薪python之路 -- 内置函数二 -- 最常用的内置函数

    1.内置函数 1.1 匿名函数 匿名函数,顾名思义就是没有名字的函数(其实是有名字的,就叫lambda),那么什么函数没有名字呢?这个就是我们以后面试或者工作中经常用匿名函数 lambda,也叫一句话 ...

  2. python基础(16):内置函数(二)

    1. lamda匿名函数 为了解决⼀些简单的需求⽽设计的⼀句话函数 # 计算n的n次⽅ def func(n): return n**n print(func(10)) f = lambda n: n ...

  3. python记录_day13 内置函数

    详细链接:https://www.processon.com/mindmap/5bdbc4bee4b0878bf42089fb

  4. python函数知识六 内置函数二、匿名函数与内置函数三(重要)

    19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...

  5. python学习交流 - 内置函数使用方法和应用举例

    内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...

  6. Python的常用内置函数介绍

    Python的常用内置函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.取绝对值(abs) #!/usr/bin/env python #_*_coding:utf-8_ ...

  7. python---day14( 内置函数二)

    内置函数二一:匿名函数 lambda函数 lambda 表示匿名函数,不需要用def 来申明. 语法: 函数名=lambda 参数:返回值 ----〉 案例:f=lambda n:n*n 例子01: ...

  8. python常用的内置函数哈哈

    python常用的内置函数集合做一个归类用的时候可以查找 abs 返回数字x的绝对值或者x的摸 all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为true,就 ...

  9. python常用的内置函数

    python常用的内置函数集合做一个归类用的时候可以查找- abs 返回数字x的绝对值或者x的摸 - all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为tru ...

随机推荐

  1. Docker 搭建Spark 依赖sequenceiq/spark:1.6镜像

    使用Docker-Hub中Spark排行最高的sequenceiq/spark:1.6.0. 操作: 拉取镜像: [root@localhost home]# docker pull sequence ...

  2. 【字符串区别】SQLServer中char、varchar、nchar、nvarchar的区别:

    一.定义 char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度,存储ANSI字符 ...

  3. (转)干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)

    干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码) 该博客来源自:https://mp.weixin.qq.com/s?__biz=MzA4NzE1NzYyMw==& ...

  4. python学习之re库

    正则表达式库re是非常重要的一个库. 首先正则表达式有两种表示类型,一种是raw string类型(原生字符串类型),也就是我们经常看到的r'  '的写法,另一种是不带r的写法,称为string类型. ...

  5. HDU 5782 Cycle(KMP+哈希)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=5782 题意:给出两个长度相等的字符串,输出两个字符的每个前缀是否循环相同. 思路: 如果连个串循环相 ...

  6. JavaScript(ES5)知识点梳理

    数据类型(null undefined number string boolean object)数据类型之间的相互转化(Boolean Number String parseInt parseFlo ...

  7. tomcat中实现特定路径下的图片的url访问Tomcat配置图片保存路径,图片不保存在项目路径下

    使用Tomcat作为服务器的时候,如果不配置图片保存路径,将图片保存在项目路径下,那么再次打war包发布项目可能会造成图片的丢失,每次重启前将图片先保存再copy到服务器明显不方便,这时可以配置图片保 ...

  8. java之双缓冲的代码粘贴

    private Image offScreenImage = null; public void update(Graphics g) { if(offScreenImage == null) off ...

  9. L2-021 点赞狂魔

    会set的基础用法就可以A了,虽然是L2题,但是不难,代码如下,很好理解,set在这里不解释了自己去网上查一下就明白了: #include<stdio.h> #include<str ...

  10. 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句

    在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句  突然看到这个问题,脑袋一蒙,不知道啥意思,后来想想,试图把select里的选项放到后面,问题自然解决!   下面这 ...