函数的递归,二分法,三元表达式,列表生成式,字典生成式,匿名函数,内置方法

1 递归函数

函数在调用阶段,直接或间接的调用了自身

递归函数不应该一直递归下去,我们不考虑它到底循环多少次,我们只考虑它的结束条件

递归函数分为两个阶段

  1 回溯;就是一次次重复的过程,这个重复的过程,每一次都应该比上一次简单

  2 地推;一次次往回推导的过程

2 二分法

可以在一个有序的序列,快速的查找一个元素;

b = [1,2,3,4,5,6]

a = 3
def func(l,n):
    if not l:
        return
    ret = len(l) // 2
    if n > l[ret]:
        list_r = l[ret+1:]
        func(list_r,n)
    elif n < l[ret]:
        list_l = l[0:ret]
        func(list_l,n)
    else:
        print("找到了")

func(b,a)

3 三元表达式

格式;返回值1 if 条件 else 返回值2

条件成立;返回值1

条件不成立;返回值2

注意;三元表达式,不要嵌套嵌套,达不到三元表达式的效果,不简洁,不明了

x = 1
y = 2

ret = x if x > y else y
print(ret)

4 列表生成式

先for循环依次取出列表里面的每一个元素
然后交由if判断  条件成立才会交给for前面的代码
如果条件不成立 当前的元素 直接舍弃

l = [1,2,3,4,5,6]
ret = [i+1 for i in l]
print(ret)  # [2, 3, 4, 5, 6, 7]
ll = ["name","age","hobby","play.py"]
ret1 = ["%s.py"%i for i in ll if i.endswith(".py")]  #可以加if,但不可以加else 如果条件成立就取出那个值放入for前面的字符串中
print(ret1)
#
ret2 = ["%sNb"%i for i in ret1]print(ret2)

4 字典生成式

for 循环 enumerate括号容器类型的元素作为字典的键或者value
前面用“:”来接收这两个元素

ret = {"%s.py"%j:"%s"%i for i,j in enumerate(["name","age","play","run"],)}
print(ret)

  注意;

    无论列表,生成式,或是字典生成式,都必须是能够for循环的

    字典生成式,与列表生成式,最大的不同就是

    列表是直接给for前面的变量接收,而字典前面接收的是两个变量,并且是以":"(冒号)连接

    列表 in 后面直接跟容器类型,而字典后面 in 跟的是 enumerate(容器类型)

5 匿名函数

没有名字的函数

匿名函数的特点;临时用完,临时就没了

格式;lambda 变量1,变量2: 返回值

左变,相当于函数的形参

右边,相当于函数的返回值

注意;匿名函数常不会单独使用,经常和内置方法一起使用

6 常用内置方法

map 映射l = [1,2,3,4,5,6]print(list(map(lambda x:x+5,l)))  # 基于for循环
zip 拉链  # 基于for循环
l1 = [1,2,]
l2 = [‘jason‘,‘egon‘,‘tank‘]
l3 = [‘a‘,‘b‘,‘c‘]
print(list(zip(l1,l2,l3)))
l = [1,2,3,4,5,6]
print(list(filter(lambda x:x != 3,l)))  # 基于for循环
l = [‘jason‘,‘egon‘,‘nick‘,‘tank‘]
print(sorted(l,reverse=True))
from functools import reduce
l = [1,2,3,4,5,6]
print(reduce(lambda x,y:x+y,l,19))  # 19初始值  第一个参数
# 当初始值不存在的情况下 按照下面的规律
# 第一次先获取两个元素 相加
# 之后每次获取一个与上一次相加的结果再相加

原文地址:https://www.cnblogs.com/cherish937426/p/11182102.html

时间: 2024-11-12 09:48:52

函数的递归,二分法,三元表达式,列表生成式,字典生成式,匿名函数,内置方法的相关文章

字符串,列表,元祖,字典,集合的内置方法

一. 数字类型 1.1 整型int   1.用途: 记录年龄\等级\各种号码 2.定义方式: age=18 age=int(18) x=int('123') #只能将纯数字的字符串转换成整型 print(type(x)) print(int(3.7)) #这个小数部分没有了 3.常用操作+内置的方法           ( 赋值\比较\算术) 该类型总结:   存一个值  ;  不可变(1.可变:值变,id不变.可变==不可hash 2.不可变:值变,id就变.不可变==可hash) 判断是否哈

递归/匿名函数/三元表达式/列表生成式/字典生成式/二分算法

让在下揭开尔等的面纱,一探究竟:) >>>递归: 递归是一个往复的过程,也就是由两个过程组成,一个是计算过程,一个是将值层层返回的过程,递归的奇妙之处,就在于自身调用自身,然后,过程遵循由复杂到简单,最终满足相应条件后,退出,返回结果.说了一大堆,不过直接上代码: test_list = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,[14,]]]]]]]]]]]]]] res = 0 def sum_list(test_list, res): f

生成器 三元表达式 列表生成式 匿名函数 内置函数

生成器 1.什么是生成器? ? -生成的工具 ? -生成器是一个自定义的迭代器,本质上是一个迭代器. 2.如何实现生成器? -但凡在函数内定义的yield ? -调用函数时,函数体代码不会执行 ? 会返回一个结果,这个结果就是生成器. 3.yield ? -每一次的yield都会往生成器对象中添加一个值. ? -yield只能在函数内定义 ? -yield可以保存函数的暂停状态 yield和return的对比 ? -相同点: ? 返回值的是不限制的: ? -不同点 ? return一次只可以返回

三元表达式,列表推导式和字典生成式

三元表达式 dog_name='crazy_dog' if dog_name=='crazy dog': print('疯狗') else: print('溜了') #通过三元表达式,我们可以缩减为以下代码 dog_name='crazy_dog' print('疯狗')if dog_name=='crazy_dog' else print('溜了') #三元表达式只支持双分支结构 条件成立时的返回值 if 条件 else 条件不成立时的返回值 列表推导式 lt=[] for i in rang

s14 第4天 关于python3.0编码 函数式编程 装饰器 列表生成式 生成器 内置方法

python3 编码默认为unicode,unicode和utf-8都是默认支持中文的. 如果要python3的编码改为utf-8,则或者在一开始就声明全局使用utf-8 #_*_coding:utf-8_*_ 或者将字符串单独声明: a = "中文".encode("utf-8") 函数式编程 函数式编程中的函数指代的是数学中的函数. 函数式编程输入如果确定,则输出一定是确定的.函数中并没有很多逻辑运算 python是一个面向对象的语言,只是一部分支持函数式编程.

第二模块&#183;函数编程-第1章 函数、装饰器、迭代器、内置方法

01-鸡汤之人丑就要多读书 02-三元运算 03-文件处理 04-文件处理-二进制模式 05-文件处理-智能检测编码的工具 06-文件处理-写模式操作文件 07-文件处理-追加模式操作文件 08-文件处理-混合操作文件 09-文件操作其他功能 10-文件处理-文件修改功能 11-函数-基本介绍 12-函数-默认参数 13-函数-关键参数 14-函数-非固定参数 15-函数-非固定参数2 16-函数-返回值 17-函数-局部变量 18-函数-在函数里修改全局变量 19-函数-在函数里修改列表数据

python学习笔记4--装饰器、生成器、迭代器、匿名函数、内置方法、数据序列话

一.装饰器 1.意义:当需要给程序中某些函数新增某项功能时,为了避免直接修改函数源代码和函数调用方式,所以引入装饰器. 2.定义:装饰器用于装饰其他函数,就是为其他函数提供附加功能. 3.原则: 1)不修改被装饰的函数的源代码 2)不修改被装饰的函数的调用方式 4.装饰器储备知识: 1)函数即变量 2)高阶函数 a.把函数当做参数传递给另一个函数(在不修改被修饰函数源代码的情况下为该函数添加功能) b.返回值中包含函数名(在不修改被修饰的函数的调用方式的情况下为该函数添加功能) 3)嵌套函数:在

迭代器,生成器,生成器表达式,常用内置方法

迭代器 迭代器的定义:迭代器指的是迭代取值的工具,迭代是一种重复的过程,每一次重复都是基于上一次的结果而来单纯的重复不是迭代.比如:while的死循环打印同一个值就不是迭代. l=['a','b','c'] i=0 while i < len(l):      print(l[i])      i+=1 这个while循环每一次取值都是基于上一次的结果往下进行,这就是一个迭代的过程. 迭代器的使用原因:迭代器提供了一种通用的且不依赖索引的迭代取值的方式 迭代器的使用方式 特点:可迭代的(iter

匿名函数和内置方法

匿名函数用lambda定义只能用三元运算 python内置方法abs()取绝对值all(可迭代对象)可迭代对象都为真,返回Trueany(可迭代对象)可迭代对象有一个为真,返回Truebin()二进制转换bool()判断真假bytearray()可修改的二进制字节格式callable()是否可以调用ord(输入字符),chr(输入数字) 返回ascii码对应表dir()查看有什么方法divmod(x,y)相除返回余数enumerate(),获取下标eval()把字符串解释出来exec()语句运算