一.递归函数

  递归函数:就是在函数调用阶段直接或者间接的调用自己

  递归函数的两个阶段:

    1.回溯:不停的重复的一个过程,在这个过程中将问题不断的简单化,直到最终打到要求(条件)

    2.递归:一次次的往回推导的过程

ps:递归函数不应该无限制二笃递归下去,若不规定递归次数在达到998次左右系统会停止递归

def func(n):print('from func',n)func(n+1)func(1)  # from func 998

ps:要想查看次数或者设置递归次数可以使用sys模块

import sys
def func(n):print('from func',n)func(n+1)
print(sys.getrecursionlimit())  # 默认1000(不精确)
sys.setrecursionlimit(2000)  # 设置次数

a,b,c,d,e,f每个数之间差5 f为20,求其余四个数
def func(n):if n == 1:return 20return func(n-1)+5

到处列表中的每个元素
a=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,]]]]]]]]]]]]]
def func(a):for i in a:if type(i)  is int:print(i)func(i)

二.二分法

二分法的使用条件:使用对象为容器类型且其中元素按大小顺序排列a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

def func(a, num):  if not a:    print('请来个有点货的')    returnb = len(a) // 2if num > a[b]:a_r = a[b + 1:]func(a_r, num)elif num < a[b]:a_l = a[:b]func(a_l,num)else:print(num)
func(a,4)

三.三元表达式

三元表达式的固定表达式:

  值1 if 条件 else 值2

ps:条件成立输出值1,条件不成立输出值2

num = int(input('请输入数字'))
res = 'Odd number'if num % 2 == 1 else  'even number'
print(res)

四.列表,字典生成式

a = [1,2,3,4,5,6,7,6,324,23]
res = [i for i in a if i > 6]
print(res)  # [7, 324, 23]

ps:对列表a进行for循环依次取出列表中的每一个元素,然后进行if条件判断,如果为真则添加到i中若为假则直接丢掉

五.字典生成式

list1 = [1, 2, 3]
list2 = ['first', 'second', 'third']
d={}
for i,j in enumerate(list1):d[j] = list2[i]
print(d)  # {1: 'first', 2: 'second', 3: 'third'}

若list1 = [1, 2, 3, 4]
list2 = ['first', 'second', 'third']
d={}
for i,j in enumerate(list1):d[j] = list2[i]
print(d)  # 会报错,没有对应的value
若list1 = [1, 2, 3]
list2 = ['first', 'second', 'third','fourth']
d={}
for i,j in enumerate(list1):d[j] = list2[i]
print(d)  # {1: 'first', 2: 'second', 3: 'third'}

l1 = ['first', 'second', 'third']
d = {i:j for i,j in enumerate(l1,1) if j != 'second'}
print(d)  # {1: 'first', 3: 'third'}

ps:枚举的编号从1开始,先进行枚举处理,然后拿出j的值进行判断,条件为真则以key:value的形式存储在for之前,若条件为假则丢弃这一组数据

ps:集合生成式

res={i for i in range(10) if i>3}
print(res)  # {4, 5, 6, 7, 8, 9}

元组生成式:

res=(i for i in range(10) if i >3)
print(res)   # <generator object <genexpr> at 0x0000025B7C99D0A0>生成的是一个生成器for j in res:print(j)  # 4 5 6 7 8 9 

六.匿名函数

匿名函数特点:临时存在,用完就没了

匿名函数的基本式:

lambda x, y: x+y
# lambda是匿名函数的关键字
# 冒号左边的相当于形参
#冒号右边的相当于返回值
ps:匿名函数通常不会单独使用,一般配合内置函数一起使用

七.常用的内置函数

1.max,min

d={'zhagn':100,'wang':200,'chen':400
}
def index(name):return d[name]
print(max(d,key=index))
print(min(d,key=index))
print(max(d,key=lambda name:d[name]))
print(min(d,key=lambda name:d[name]))
#max/min后有2个选项,第一个是对象,第二个是传的是函数,函数返回什么就比较什么,比较的是值返回的还是名字

2.map(映射)

a=[1,2,3,4]
print(list(map(lambda x:x+5,a)))  # [6,7,8,9]
# map后面需添加2个参数,第一个参数是函数,第二个是可迭代对像(容器),基于for循环依次取出a中的值,经过lambda处理后拿到返回值,经过map处理完后是一个生成器,经过list基于for循环取出其中的值

3.zip(拉链)

l1 = [1,2,]
l2 = ['jason','egon','tank']
l3 = ['a']
print(list(zip(l1,l2,l3)))  # [(1, 'jason', 'a'), (2, 'egon', 'b')]
# 处理的对象元素需要意义对应入不满足会被舍弃list处理前也是个生成器,都是基于for循环的
l1 = [1,2,]
l2 = ['jason','egon','tank']
l3 = ['a']
print(list(zip(l1,l2,l3)))  # [(1, 'jason', 'a')] 只有三个都对应上了才会存储,不满足的会被直接丢弃,类似于木桶原理取其最短

4.filter(过滤)

l = [1,2,3,4,5,6]
print(list(filter(lambda x:x != 3,l)))  # 基于for循环 在list处理前也是个生成器,处理后结果为[1, 2, 4, 5, 6]

5.sorted(排序)默认升序

l = ['jason','egon','nick','tank']
print(sorted(l))  # ['egon', 'jason', 'nick', 'tank'] 升序
print(sorted(l,reverse=True))  # 降序['tank', 'nick', 'jason', 'egon']

6.reduce(处理可迭代对像拿到一个结果(一个值))

from functools import reduce
l = [1,2,3,4,5]
print(reduce(lambda x,y:x+y,l,19))  # 传初始值,去对象中的一个元素和初始值相加,把处理结果和第三个数相加以此类推
print(reduce(lambda x,y:x+y,l))   # 不传初始值,直接去对象中的2个元素进行相加,把结果和第三个元素相加依此类推

转载于:https://www.cnblogs.com/z929chongzi/p/11177416.html

函数递归/二分法/列表,字典生成式/三元表达式/匿名函数/内置函数相关推荐

  1. python内置函数可以返回列表元组_十九、python内置函数汇总

    ''' 内置函数 abs():取绝对值 all():每个元素都为真,才是真any():有一个元素为真即为真 bin():十进制转二进制 hex():十进制转十六进制 int():所有的转成十进制 oc ...

  2. python 函数递归_Python零基础之三元表达式、函数递归、匿名函数教程!超级详细!...

    目录 一.三元表达式 二.函数递归 递归调用的定义 递归分为两个阶段:递归,回溯 三.匿名函数 什么是匿名函数? 有名字的函数与匿名函数的对比 lambda匿名函数的应用 四.内置函数 #注意:内置函 ...

  3. python学习第十节(yield表达式的应用+内置函数)

    上节复习 yield表达式 g.send(1) send函数是相当于next并且给yield传一个值,先传值,再next 加上装饰器 yield表达式的应用 第一个是当前目录的地址 第二个是当前目录下 ...

  4. python基础12_匿名_内置函数

    # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, 66]def bina ...

  5. 这么多的内置函数能记住吗?对python的68个内置函数分类总结!

    [阅读全文] 内置函数列表 ''' abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod( ...

  6. python常用函数-Python小白必备的8个最常用的内置函数(推荐)

    Python给我们内置了大量功能函数,官方文档上列出了69个,有些是我们是平时开发中经常遇到的,也有一些函数很少被用到,这里列举被开发者使用最频繁的8个函数以及他们的详细用法 print() prin ...

  7. python 常用内置函数_Python小白必备的8个最常用的内置函数(推荐)

    Python给我们内置了大量功能函数,官方文档上列出了69个,有些是我们是平时开发中经常遇到的,也有一些函数很少被用到,这里列举被开发者使用最频繁的8个函数以及他们的详细用法 print() prin ...

  8. python怎么用函数查看变量类型_查看变量类型的Python内置函数是()。

    [单选题]下列不属于反射的是( ) [判断题]传统通俗史学有普及型和通俗型 [单选题]当前最流行和最受重视的资料分析是( ). [简答题]什么情况下采用斜视图比较合适? [单选题]下列命题正确的是( ...

  9. python func函数用法_python教程:3个非常有用的内置函数

    这三个内置函数还是非常有用的,在工作中用的还不少,顺手,下面一一进行介绍 1.filter 语法:filter(function,iterable) 解释:把迭代器通过function函数进行过滤出想 ...

最新文章

  1. 比特币现金BCH 硬分叉,能否突破$1500?
  2. OVH公司进军英国数据中心市场
  3. 带有匹配滤波器的雷达信号调制和脉冲压缩技术的Matlab程序
  4. 需要某个字体包才能正确显示此页面_如何做设计,才能做好设计
  5. 【Python】科赫雪花绘制
  6. MongoDB一次节点宕机引发的思考(源码剖析)【华为云分享】
  7. 计算机技术领域当前的主流技术及社会需求调查报告
  8. (58)FPGA面试题-只使用双输入NAND门,设计了一个四输入NAND门
  9. java connection 单例_Java设计模式之单例模式详解
  10. 基于javaweb实现人脸识别
  11. pandas25 if else语句(多数据df选择)( tcy)
  12. 在method方法被调用之后,仅打印出a=100,b=200,请写出method方法的代码
  13. ImageSpan 不显示或者变小
  14. 6.2.2 分区与副本
  15. OpenCV4探索学习:OpenCV-4.1.0 Samples官方示例说明
  16. 迎风面投影指数迎风面密度计算工具及计算实例经验分享
  17. 工信部新规本月底施行 未经用户同意发送商业短信将被罚款
  18. UPnP的功能和使用
  19. 火爆全网的条形竞赛图,Python轻松实现
  20. 解决端口被占用问题,安装MySQL出现端口被占用

热门文章

  1. centeros mysql_center os 7 Mysql 安装
  2. java阻塞执行命令_java执行bat命令碰到的阻塞问题的解决方法
  3. convolutional pose machines
  4. SQLite Tutorial 2 install free sqlite gui manager in firefox
  5. 第一章 在VS2008下如何配置好CG环境
  6. Matlab曲线标记间距自定义
  7. java xml 字符串转对象_java读取xml文件并转换成对象,并进行修改
  8. 全信考试JAVA_2010年全国信息技术水平考试JAVA样题
  9. 浏览器访问sftp服务器_Mountain Duck for Mac(FTP服务器管理工具)v4.0.0.16698
  10. BertEmbedding的各种用法