daY15 三元表达式 递归 匿名函数 内置对象

昨日回顾

1.迭代器

    根据上一个结果,得到一个新的结果,即一个新的值

    本质就是在帮你获取值,其目的就是统一取值方式

    一个数据 类型要想被迭代器取值,必须支持迭代器

    判断一个类型是否支持就看其是否具备iter方法.只要具备就称之为可迭代对象(iterable)    

    调用iter就能获取迭代器,后续通过调用迭代器的next方法就能获取到值

    如此一来我们就可以通过统一的方式来操作各种数据类型,这就有了for循环

    for循环的本质就是在使用取值,所以for的后面只能跟可迭代的类型

2.生成器

    产生数据的工具

    生成器可以不断产生新的数据,并且同一时间在内存中只有一个数据 ,节省了内存开销

    如何得到生成器(本质是一个函数,其函数体中至少具备一个yield关键字)

yield关键字的特点:

    1.调用存在yield的函数时,不会立即执行函数体,返回一个生成器

    2.可以使得函数暂停执行

    3.可以返回 一个值给next的调用者

    4.可以返回多次值

    5.还能保存函数的执行状态

    yield出现几次,就说明能产生几个数据,就能调用几次

迭代器本质就是生成器

    生成器是实现迭代器的基础,所以生成器也具备iter和next

3.面向过程编程思想

    编程思想就是一种编程的方式方法

    编程思想没有好坏之分,只有合适与不合适

    其核心是过程,即做事情的具体步骤流程

    优点:把一个复杂的问题简单化 ,流程化

    缺点:扩展性极差

 

今日内容

01三元表达式****

    符合python语法的表达方式(形式,公式)称之为表达式

    三元,三个元素

    总体就是由三个元素组成的表达式

 

    其目的是为了简化书写 ,既然是简化就必然有局限性

    三元表达式只能帮你简化仅有两个分支的if判断,并且这个判断无论成立与否都必须返回一个值

age = 18

res = True if age >= 18 else False

print(res)

02递归*****(recursion)

    递归指的是递归调用,简单地说就是一个函数在执行过程中直接或者间接调用该函数本身 

    递归时可能出现的错误(在调用函数时超出了最大递归深度)

 

    直接调用本身

def f1():

    print("run f1")

    f1()

f1()

     间接调用本身

def f1():

    print('f1')

    f2()

def f2():

    print('f2')

    f1()

f1()

    python为了防止递归太多导致内存溢出,所以给递归调用加上了深度(次数)限制,默认为1000

    

import sys

print(sys.getrecursionlimit())#查看默认递归次数

sys.setrecursionlimit(2000)#修改递归默认次数

print(sys.getrecursionlimit())#查看修改后默认递归次数

    递归调用本质上分就是在循环执行代码,与普通循环不同的是,函数调用会产生一系类内存开销,就会导致内存溢出,而循环没有这个问题

    如此一来,则表示所有递归能干的事情循环也能干

    在使用递归时要注意:

    1.一定要在某个条件满足时就结束循环调用

    2.循环调用的次数不能超过系统的限制

    3.每一次执行函数都应该使问题的规模减少,否则就是无用的循环

    4.python中没有尾递归优化机制(使得递归调用占用的开销更小)

 

    在使用递归遍历所有元素(不知道有几层时 发现递归使用起来代码量更少,代码结构更加清晰)

    

    什么时候使用递归:

    你不会知道到底要循环几次

二分查找法(分半查找 折半查找)

    原理:

    先将整体分为两半 

    然后取出中间的元素 ,与你要查找的目标进行不对,如果你要在号的比中间值大请走右边,如果你要在号的比中间值小请走左边

    1.先得到一个中间值,比较是不是你要找的如果是直接返回

    2.如果不是 那就把列表拆为两半,进行比较

    3.如果你要找的比中间值大找右边

       如果你要找的比中间值小找左边

 

03匿名函数****

    匿名指的就留是没有名字

    其最明显的特点:`

    1.有名字的值可以多次使用 多次访问

    2.而没有名字的值,只能临时使用一次,用完就没了

    匿名函数有有名函数的区别

    关键字是lambda

    参数不需要括号,并且支持所有类型的参数

    名称空间与作用域关系完全相同

    函数体不能写rtturn 会自动将执行结果返回

    函数体只能有一个表达式  且不能换行

    匿名函数什么时候使用

    1.当你的函数的函数体只有一行表达式时,并且仅使用一次时就可以作为匿名

    更多的是与内置函数联用(max,min,sorted,map,filter,reduce)

 

04常用的内置函数****

1.map 映射 

#map 用于从一个可迭代对象中取出所有数据,进行一系列操作后,在放回新列表

li=[1,2,3,4,5]

# def f1(v):

#     print(v)

#     return v+100

# res=map(f1,li)

res=map(lambda v:v+100,li)

print(list(res))

2.filter 过滤

# filter 过滤 用于从一堆数据中过滤掉一些不满足条件的数据,提供一个函数,要求函数的返回值是波尔类型Ture保留False

li=[10,20,30,40,50]

res=filter(lambda v:True if v >18 else False,li)

print(list(res))

3.reduce 合并

    

#从functools中拿到一个reduce

#reduce是把列表中的数据进行合并 每次回传给你两个值 n 和n+1个

from functools import reduce

li=[10,20,30,40,50]

res=reduce(lambda x,y:x+y,li)

print(res)

 

    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
探索全栈前端技术的魅力:HTML+CSS+JS+JQ+Bootstrap网站源码深度解析 在这个数字化时代,构建一个既美观又功能强大的网站成为了许多开发者和企业追逐的目标。本份资源精心汇集了一套完整网站源码,融合了HTML的骨架搭建、CSS的视觉美化、JavaScript的交互逻辑、jQuery的高效操作以及Bootstrap的响应式设计,全方位揭秘了现代网页开发的精髓。 HTML,作为网页的基础,它构建了信息的框架;CSS则赋予网页生动的外观,让设计创意跃然屏上;JavaScript的加入,使网站拥有了灵动的交互体验;jQuery,作为JavaScript的强力辅助,简化了DOM操作与事件处理,让编码更为高效;而Bootstrap的融入,则确保了网站在不同设备上的完美呈现,响应式设计让访问无界限。 通过这份源码,你将: 学习如何高效组织HTML结构,提升页面加载速度与SEO友好度; 掌握CSS高级技巧,如Flexbox与Grid布局,打造适应各种屏幕的视觉盛宴; 理解JavaScript核心概念,动手实现动画、表单验证等动态效果; 利用jQuery插件快速增强用户体验,实现滑动效果、Ajax请求等; 深入Bootstrap框架,掌握移动优先的开发策略,响应式设计信手拈来。 无论是前端开发新手渴望系统学习,还是资深开发者寻求灵感与实用技巧,这份资源都是不可多得的宝藏。立即深入了解,开启你的全栈前端探索之旅,让每一个网页都成为技术与艺术的完美融合!
探索全栈前端技术的魅力:HTML+CSS+JS+JQ+Bootstrap网站源码深度解析 在这个数字化时代,构建一个既美观又功能强大的网站成为了许多开发者和企业追逐的目标。本份资源精心汇集了一套完整网站源码,融合了HTML的骨架搭建、CSS的视觉美化、JavaScript的交互逻辑、jQuery的高效操作以及Bootstrap的响应式设计,全方位揭秘了现代网页开发的精髓。 HTML,作为网页的基础,它构建了信息的框架;CSS则赋予网页生动的外观,让设计创意跃然屏上;JavaScript的加入,使网站拥有了灵动的交互体验;jQuery,作为JavaScript的强力辅助,简化了DOM操作与事件处理,让编码更为高效;而Bootstrap的融入,则确保了网站在不同设备上的完美呈现,响应式设计让访问无界限。 通过这份源码,你将: 学习如何高效组织HTML结构,提升页面加载速度与SEO友好度; 掌握CSS高级技巧,如Flexbox与Grid布局,打造适应各种屏幕的视觉盛宴; 理解JavaScript核心概念,动手实现动画、表单验证等动态效果; 利用jQuery插件快速增强用户体验,实现滑动效果、Ajax请求等; 深入Bootstrap框架,掌握移动优先的开发策略,响应式设计信手拈来。 无论是前端开发新手渴望系统学习,还是资深开发者寻求灵感与实用技巧,这份资源都是不可多得的宝藏。立即深入了解,开启你的全栈前端探索之旅,让每一个网页都成为技术与艺术的完美融合!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值