1. 内置函数二
    一:匿名函数 lambda函数
  1.   lambda 表示匿名函数,不需要用def 来申明。
  2. 语法: 函数名=lambda 参数:返回值 ----〉 案例:f=lambda n:n*n
  1. 例子01
  1.     计算n*n 的值:
  2. f=lambda n:n*n
  3. print(f(10)) 打印:100
  1. 例子02
  1.      计算nn次方
  2. def func(n):
  3. return n*n
  4. print(func(2)) #打印:4
  1. 匿名函数的注意事项:
  1. 1:函数参数能-是多行,多个参数用逗号隔开
  2. 2:匿名函数不管多复杂,只能写一行,且逻辑结束后直接返回数据
  3. 3:返回值和正常的函数一样,可以是任意数据类型
  1. 二:sorted 函数:
    排序函数:
    001sorted
  1. sorted(Iterable,key=None,reverse=False)
  2. Iterable: 可迭代对象
  3. key: 排序规则(排序函数), sorted内部会将可迭代对象中的每⼀个元素传递给这个函
  4. 数的参数. 根据函数运算的结果进⾏排序
  5. reverse: 是否是倒叙. True: 倒叙, False: 正序

  根据大小排序

  1. lst=[1,5,3,4,6]
  2. lst2=sorted(lst)
  3. print(lst) #[1, 5, 3, 4, 6]
  4. print(lst2) #[1, 3, 4, 5, 6] 进过sorted函数后,返回了从小到大排序好的数

  例子:

  1. 根据字符串长度进行排序,和函数组合使用 #revserse Ture 则降序,反则升序
  2. lst=["马虎疼","qwer","哎呦喂啊啊","旺财"]
  3. def func(s):
  4. return len(s)
  5. print(sorted(lst,key=func)) #['旺财', '马虎疼', 'qwer', '哎呦喂啊啊']

  #计算字符串长度

  1.  
  1.   def func(s):
  2. return len(s)
  3.   print(sorted(lst,key=lambda s:len(s))) #['旺财', '马虎疼', 'qwer', '哎呦喂啊啊']
  4.   lst1=[{"id":1,"name":"xuxiansheg","age":18},
  5.   {"id":2,"name":"haha","age":12},
  6.   {"id":3,"name":"enen","age":15}
  1. 按照年龄排序:
  1.   print(sorted(lst1,key=lambda n:n["age"]))
  2. 打印:[{'id': 2, 'name': 'haha', 'age': 12}, {'id': 3, 'name': 'enen', 'age': 15}, {'id': 1, 'name': 'xuxiansheg', 'age': 18}]
  1. 三: filter() 筛选函数:
  1. 语法:filter() #filter只保留,返回为真的数据,过滤list的作用
  1. filter() :用来筛选函数,在filter 中会自动把iterable中的元素
  2.   传递给function 然后根据function返回的True 或则False 来判断是否保留此项数据
  1. 例子01
  2. lst=[1,2,3,4,5,6,7]
  3. ll=filter(lambda x:x%2==0,lst) #筛选所有的偶数
  4. print(ll) #<filter object at 0x00000063DE87DB38>
  5. print(list(ll)) #[2, 4, 6]
  6.  
  7. 例子02
  8. lst1=[{"id":1,"name":"xuxiansheg","age":18},
  9. {"id":2,"name":"haha","age":12},
  10. {"id":3,"name":"enen","age":15}
  11. ]
  12. fl=filter(lambda e:e["age"]>12,lst1) #筛选
  13. print(list(fl))
  14. a=list(fl)
  15. print(a)
  16. # 打印:[{'id': 1, 'name': 'xuxiansheg', 'age': 18},
  17. # {'id': 3, 'name': 'enen', 'age': 15}]
  1. 四: map()映射函数 #map是帮你循环调用函数,这个函数返回就保存什么。
  1.   map语法:map(function,iterable) 可以对迭代对象中的每一个元素
  2. 映射分别取执行function
  

  1. 例子01
  2. # map 对每个元素进行映射(#############)
  3. def func(e):
  4. return e*e
  5. mp=map(func,[1,2,3,4,5]) #对每个元素平方,返回新的列表
  6. print(mp) #打印:<map object at 0x000000DFDD76D2B0>
  7. print(list(mp)) #[1, 4, 9, 16, 25]
  8. 例子02
  9. 改写成lambda: lambda 必须一行写出来,直接返回值
  10. print(list(map(lambda x:x*x,[1,2,3,4,5])))
  11. #打印:[1, 4, 9, 16, 25]
  12. 例子03
  13. #计算两个列表中相同位置的数据和
  14. lst1=[1,2,3,4,5]
  15. lst2=[2,4,6,8,10]
  16. print(list(map(lambda x,y:x+y,lst1,lst2))) #[3, 6, 9, 12, 15]
  17. 例子04
  18. #map案例:
  19. lst=["1_123", "alex_456", "wusir_123", "wusir_456", "alex_789"]
  20. m=map(lambda s:s=="1_456",lst)
  21. print(list(m))
  22. def fun(s):
  23. if s=="1_456":
  24. return "登陆成功"

例子

  1. 五:在函数中调用函数本身,就是递归:################
  1. def func():
  2. print("我是谁!")
  3. func()
  4. func() #循环打印: 我是谁
  5.  
  6. #python中递归的深度最⼤到1000 但是永远到不了一千
  7. def foo(n):
  8. print(n)
  9. n+=1
  10. foo(n)
  11. foo(1)
  1.  

六:递归的应用(############重点)

  1.  
  1. 说明:# # 我们可以使⽤递归来遍历各种树形结构, 比如我们的⽂件夹系统. 可以使⽤递归来遍历该
  2. # # ⽂件夹中的所有⽂件
  

  1. 例子:01
  2.  
  3. import os
  4. def func(path):
  5. lst=os.listdir(path) #打开一个文件夹
  6. print(lst)
  7. for el in lst: #当前文件夹内的所有文件名。包括文件夹的名字
  8. #拼接文件的真实路径
  9. # file_real_path=os.path.join(path,el) #文件路径的固定写法 os.path.join(path,el)
  10. q = os.path.join(path, el) # 文件路径的固定写法
  11. #判断这个路径是文件夹还是文件
  12. if os.path.isdir(q):
  13. #递归的入口
  14. print(el)
  15. func(q) #重新执行刚才的操作,如果是文件则继续打开
  16. else:#不是文件夹,是文件则返回文件名
  17. print(el)
  18. func("F:/1")

例子

  1. #####################习题!
  1. #计算1-3+5-7+9......99的结果
  2. sum=0
  3. fu=1
  4. for i in range(1,100,2):
  5. sum+=i*fu
  6. fu=-fu
  7. print(sum)
  1. 七:二分法(掐头去尾取中间)###最主要的是:二分法需要的是已经排序好的列表才行!
  1. 二分法:第一种
  1. lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963]
  2. left=0
  3. right=len(lst)-1
  4. num=int(input("请输入您需要判读的数字:"))
  5.  
  6. while 1:
  7. if left<=right: #左右索引可以相等
  8. mid=(left+right)//2 ##每次的都是以中间值为分界的
  9. if lst[mid]>num: ###说明我们要找的数字在中间值得左边
  10. right=mid-1
  11. elif lst[mid]<num: ### 说明我们呢要找的值在中间值得右边
  12. left=left+1
  13. else:
  14. print("找到了!")
  15. break
  16.  
  17. else:
  18. print("没找到!")
  1. 二分法:第二种
  1. 0 1 2 3 4 5 6 7 8
  2. lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963]
  3.  
  4. def binary_search(lst, n, left, right):
  5. if left > right:
  6. return False
  7. mid = (left + right) // 2
  8. if n > lst[mid]:
  9. left = mid + 1
  10. #重点# 当递归有返回值的时候. 需要写return. 否则有可能接收不到返回值##############################
  11. return binary_search(lst, n, left, right)
  12. elif n < lst[mid]:
  13. right = mid - 1
  14. return binary_search(lst, n, left, right)
  15. else:
  16. print("找到了")
  17. return True
  18.  
  19. n = int(input("请输入一个数字n:")) #
  20. ret = binary_search(lst, n, 0, len(lst)-1)
  21. print(ret)
  1. 二分法:第三种
  1. #切换列表,这种方法主要思想:以中间的数字为界限,如果要找的数字比中间数字大,则左边的数据切割掉不需要了,再以
  2. #中间数字为起始位置开始切割,不断持续相同切割方法,最后找到我们要找的数据,反之亦然!主要改变的是列表的长度
  3. def binary_search(lst, n):
  4. if len(lst) == 0:
  5. return False
  6. left = 0
  7. right = len(lst) - 1
  8. mid = (left + right) // 2
  9. if n > lst[mid]:
  10. left = mid + 1
  11. # 当递归有返回值的时候. 需要写return. 否则有可能接收不到返回值
  12. return binary_search(lst[mid+1:], n)
  13. elif n < lst[mid]:
  14. right = mid - 1
  15. return binary_search(lst[:mid], n)
  16. else:
  17. print("找到了")
  18. return True
  19.  
  20. n = int(input("请输入一个数字n:")) #
  21. ret = binary_search(lst, n)
  22. print(ret)
  1. 八:递归深度:
  1. # 递归深度
  2. # def func():
  3. # print("哈哈")
  4. # func()
  5. # func()
  6. # python中最大的递归深度是3000 但是你永远到不了3000
  7.  
  8. 实际测试说明:最大深度是1000,但是到不了1000
  9. import sys # system python, os 操作系统
  10. print(sys.getrecursionlimit())
  11. sys.setrecursionlimit(3000) # 最大是3000 你到不了3000
  1.  
  1.  

python---day14( 内置函数二)的更多相关文章

  1. Python入门-内置函数二

    看到标题你也能猜到今天要说大概内容是什么了,没错,昨天没有说完的部分再给大家说说(有一些重合的部分),内置函数的内容比较多,并且工作中经常用到的却不太多,很多都是不太常用的,所以我就着重说一些比较常用 ...

  2. day14 内置函数二

    lamda 语法: 函数名 = lambda 参数: 返回值注意: 1. 函数的参数可以有多个. 多个参数之间⽤逗号隔开 2. 匿名函数不管多复杂. 只能写⼀⾏, 且逻辑结束后直接返回数据 3. 返回 ...

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

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

  4. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  5. python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理

    python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...

  6. python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

  7. Python的内置函数

    python的内置函数一共有68个,下面将简单介绍各个函数的功能. abs() dict() help() min() setattr() all() dir() hex() next() slice ...

  8. 如何查看Python的内置函数

    经常调用的时候不知道python当前版本的内置函数是哪些,可以用下面的指令查看: C:\Users\Administrator>python Python 2.7.11 (v2.7.11:6d1 ...

  9. python print()内置函数

    啦啦啦啦啦啦,我又来了,学习任何东西都得坚持,我一定的好好加油!!! 今天来说说print()函数,前边我们已经用过好好多次啦,现在来学习哈吧!!! Python的内置函数,print() print ...

随机推荐

  1. solrcloud学习记录

    1.今天看了下solrcloud提供的软提交的作用 硬提交:solr的建索引数据是要在提交时写入磁盘的,这是确保即便是停电也不会丢失数据: 软提交:为了提供更实时的检索能力,Solr设定了一种软提交方 ...

  2. CSS 伪类与伪元素

    CSS的元素选择器除了根据id(#).class(.).属性([ ])选取元素以外,还有很重要的一类,就是根据元素的特殊状态来选取元素.它们就是伪类和伪元素.跟id选择器.类选择器.属性选择器以及派生 ...

  3. CMakefile for Cross-Platform Compling - 1

    cmake可以自动侦测目标系统,通常编译时候包含的文件和链接的库都不是本地的文件. Demo #toolchain cmake file SET(CMAKE_SYSTEM_NAME Linux) SE ...

  4. Luogu 4473 [国家集训队]飞飞侠

    BZOJ 2143 新技能:并查集优化最短路. 暴力最短路是$O(n^4)$的,然后拿个线段树优化一下连边就$O($能过$)$了. 但是这样都太慢了. 我们考虑一个点如果之前被更新过了,那么之后就不会 ...

  5. 前端基础 之 Bootstrap框架

    浏览目录 Bootstrap介绍 为什么要使用Bootstrap? Bootstrap环境搭建 布局容器 栅格系统 Bootstrap全局样式 一.Bootstrap介绍 Bootstrap是Twit ...

  6. web大文件上传控件-监控f_create流程-Xproer.HttpUploader6

    监控f_create流程 1.打开ie,f12 2.启动网络监控 点击开始捕获 上传文件,然后查看监控 将监控信息转到详细视图 向f_create提交的数据 f_create返回值

  7. Java变量的修饰符

    1.public public的类.类属变量及方法,包内及包外的任何类均可以访问: 2.protect protected的类.类属变量及方法,包内的任何类,及包外的那些继承了此类的子类才能访问: 3 ...

  8. windowsPhone一些不常见控件

    1.InkPresenter:可以产生手写效果的控件. http://www.cnblogs.com/randylee/archive/2010/08/10/1791222.html 2.Thumb: ...

  9. firefox 59 无法使用 pac 代理上网

    最近装了 firefox,电脑配置不太高,chrome 太吃内存了. 但是发现 SwitchyOmega的 pac 模式无法工作,这篇文章提到了两个思路, 其中network.dns.disableI ...

  10. could not read data from '/Users/lelight/Desktop/ViewControllerLife/ViewControllerLife/Info.plist': The file “Info.plist” couldn’t be opened because there is no such file.

    1.Info.plist放置至新文件夹下,路径被修改了,报错. could not read data from '/Users/lelight/Desktop/ViewControllerLife/ ...