Python3 函数进阶2
迭代器
迭代器是访问容器类数据类型元素的一种方式
迭代器是一个可以记住遍历的位置的对象
迭代器对象从容器类数据类型的第一个元素开始访问, 直到所有元素被访问完后结束
迭代器只能往前不会后退
可迭代对象
- Python内置的
str/list/tuple/dict/set/file/都是可迭代对象 - 拥有
__iter__内置方法的都是可迭代对象
迭代器对象
可迭代对象使用
__iter__方法可以得到迭代器对象拥有
__iter__和__next__内置方法的就是迭代器对象
lis = [1, 2, 3]
# 可迭代对象使用__iter__方法可以得到迭代器对象
iter_lis = lis.__iter__()
print(iter_lis.__next__()) # 1
print(iter_lis.__next__()) # 2
print(iter_lis.__next__()) # 3
print(iter_lis.__next__()) # StopIteration
总结和补充
执行可迭代对象的
__iter__方法, 拿到的返回值就是迭代器对象执行迭代器对象
__next__方法, 拿到迭代器对象中的一个值执行迭代器对象
__iter__方法, 拿到的是迭代器本身文件本身就是迭代器对象
三元表达式
三元表达式就是对if...else...语句的简化写法(不建议使用)
x = 10
y = 20
# 普通写法
if x > y:
print(x)
else:
print(y)
# 三元表达式
print(x) if x > y else print(y)
列表推导式
列表推导式可以用来生成新的列表
lis = [i for i in range(10)]
print(lis) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 我们还可以对i进行数学运算
lis = [i+1 for i in [1, 2, 3]]
print(lis) # [2, 3, 4]
字典生成式
字典生成式可以用来生成新的字典
dic = {i: i**2 for i in range(3)}
print(dic) # {0: 0, 1: 1, 2: 4}
zip()函数
zip() 函数用于将可迭代的对象作为参数, 将对象中对应的元素压缩成一个个元祖, 然后返回由这些元祖组成的对象.
- 我们可以使用list()转换来输出列表
- 如果各个迭代器的元素个数不一致, 则返回列表长度以最短的为准
- 利用
*操作符, 可以将元祖解压为列表
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 8]
zipped = zip(a, b)
print(zipped) # <zip object at 0x000000000A0012C8> 返回多个元祖组成的对象
print(list(zipped)) # [(1, 4), (2, 5), (3, 6)]
print(list(zip(a, c))) # [(1, 4), (2, 5), (3, 6)] 以短的为准
a1, b1 = zip(*zip(a,b)) # zip(*) 可理解为解压
print(list(a1)) # [1, 2, 3]
print(list(b1)) # [4, 5, 6]
生成器
- 生成器本质上就是一个自定义的迭代器
- 含有
yield关键字的函数叫做生成器
def gene():
print(1)
yield 1
print(2)
yield 2
g = gene()
print(g) # <generator object gene at 0x0000000009F81258>
print(g.__next__()) # 1 1
print(g.__next__()) # 2 2
- yield的特性:
- 暂停函数
- 通过
__next__取后面的值
递归
递归是一种特殊的函数嵌套, 既在函数内部直接调用函数本身
递归函数的特性:
- 函数内部调用函数本身
- 递归必须要有规律
- 必须要有退出条件
count = 0
def func():
global count
count +=1
print(count)
if count == 5:
return
a()
'''
1
2
3
4
5
'''
Python3 函数进阶2的更多相关文章
- 5 Python3 函数进阶&迭代器与生成器
1.函数进阶 1.1.名称空间 又名name space, 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的 ...
- Python3 函数进阶3
目录 匿名函数 定义匿名函数 匿名函数的使用 内置函数 匿名函数 定义匿名函数 我们之前定义的函数都是有名函数, 我们可以通过函数名来调用 匿名函数顾名思义就是一种没有绑定函数名的函数, 使用一次既被 ...
- Python3 函数进阶1
目录 闭包函数 什么是闭包函数 闭包函数的作用 装饰器 什么是装饰器 无参装饰器 有参装饰器 闭包函数 什么是闭包函数 闭包函数本质上就是函数嵌套和高阶函数 闭包函数的满足条件: 必须嵌套函数 内嵌函 ...
- python3函数进阶
1.命名空间和作用域 命名空间 加载 内置命名空间 python解释器自带的变量和函数 开启python解释器自动加载内置命名空 ...
- 洗礼灵魂,修炼python(25)--自定义函数(6)—从匿名函数进阶话题讲解中解析“函数式编程”
匿名函数进阶 前一章已经说了匿名函数,匿名函数还可以和其他内置函数结合使用 1.map map():映射器,映射 list(map(lambda x:x*2,range(10))) #把range产生 ...
- 10.Python初窥门径(函数进阶)
Python(函数进阶) 一.函数的传参(接上期) 形参角度(一共四种,后两种) 动态参数(万能参数)* # 定义一个函数时,*所有的位置参数聚合到一个元组中 def func(*args): # * ...
- 全面系统Python3入门+进阶课程 ✌✌
全面系统Python3入门+进阶课程 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 无论是大数据.人工智能还是机器学习,Python都是最热门的首选语言 ,这 ...
- 深入理解javascript函数进阶系列第一篇——高阶函数
前面的话 前面的函数系列中介绍了函数的基础用法.从本文开始,将介绍javascript函数进阶系列,本文将详细介绍高阶函数 定义 高阶函数(higher-order function)指操作函数的函数 ...
- python3函数
一.python3函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.可以自己创建函数,这被叫做用户自定义函数. 1.定义函数规则 函 ...
随机推荐
- java编程思想第四版第八章总结
1. 多态的含义 面向对象的三大基本特征: 封装,继承,多态. 多态是干什么的? 多态将做什么和怎么做分离开.从另一个角度将接口是实现类分离开. 多态的作用 消除类型之间耦合的关系 使用多态的好处? ...
- suseoj 1206 众数问题 (相邻数比较)
1206: 众数问题 时间限制: 1 Sec 内存限制: 128 MB提交: 45 解决: 8[提交][状态][讨论版][命题人:liyuansong] 题目描述 给定含有n个元素的多重集合S,每 ...
- nyoj 311-完全背包 (动态规划, 完全背包)
311-完全背包 内存限制:64MB 时间限制:4000ms Special Judge: No accepted:5 submit:7 题目描述: 直接说题意,完全背包定义有N种物品和一个容量为V的 ...
- linux磁盘分区、格式化、挂载
新建分区的操作步骤,如下图: 1)RAID卡: 机器有没有RAID卡可以在开机时看有没有出现配置RAID什么的提示(亲测),系统运行时有没有,不知道! 服务器大多有这个新加硬盘后不修改raid,开即f ...
- Android ConstraintLayout
对官方例子加上自己的容器即可调整ConstraintLayout实时运行中观察这种布局的变化
- JPA中使用@Query注解多表联查
原生SQL: select `user`.id, `user`.`name`,dept.name deptName,sum(sd.score) SumScore from `user` LEFT JO ...
- 就该这样理解 OSI 七层参考模型、浅谈不同局域网之间的通信
简介 说到OSI参考模型,理解网络与网络之间的关系,不说太深入难以理解的东西,只求能最大程度上理解与使用. 参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为O ...
- 并行模式之Master-Worker模式
并行模式之Master-Worker模式 一).Master-Worker模式 作用: 将一个大任务分解成若干个小任务,分发给多个子线程执行. 注: 将大任务分解成小任务,小任务的实现逻辑要相同. 二 ...
- ubuntu server 1604 设置笔记本盒盖 不操作
sudo vim /etc/systemd/logind.conf //打开配置文件 找到 #HandleLidSwitch=suspend 改为 HandleLidSwitch=ignore ...
- Docker从入门到实践(4-1)
使用 Docker 镜像 在之前的介绍中,我们知道镜像是 Docker 的三大组件之一. Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像. ...