1. 列表推导式

列表推导式是通过旧的列表通过公式推导出新的列表

还有集合推导式、字典推导式,与列表推导式类似

格式为:

[表达式 for 变量 in 旧列表]
[表达式 for 变量 in 旧列表 if条件]
# 过滤掉长度小于或等于3的人名
names = ['tom','lily','abc','jack','steven']
result = [name for name in names if len(name) > 3]
print(result) #['lily', 'jack', 'steven']# 过滤掉长度小于或等于3的人名,并使每个人名首字母大写
result = [name.capitalize() for name in names if len(name) > 3]
print(result) #['Lily', 'Jack', 'Steven']
# 将1-100之间能被3整除,组成一个新的列表
newlist = [i for i in range(1,101) if i % 3 == 0 and i % 5 ==0]# 将0-5的偶数,0-10的奇数组成元组,添加到新的列表中
newlist = [(x,y) for x in range(5) if i%2 == 0 for y in range(10) if y % 2 != 0]# 如果判断条件有else,如果写推导式
newlist = [i+1 if i > 3 else i-1 for i in range(5)]

2. 生成器

2.1 生成器的概念

通过列表生成式(列表推导式),我们可以直接创建一个列表。

但是,受到内存限制,列表容量肯定是有限的。

而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间部白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?

这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

2.2 创建生成器

通过列表推导式创建

# 通过:(列表推导式)可以得到生成器
g = (x*3 for x in range(20))
print(type(g))
print(g)# 方式1:通过调用__next()__方式得到元素
print(g.__next__()) #0
print(g.__next__()) #3
print(g.__next__()) #6# 方式2:通过next(生成器对象)方法
print(next(g)) #6
print(next(g)) #12
print(next(g)) #15

借助函数创建

只要函数中出现了yield,说明函数就不是函数,变成了生成器

创建步骤:

  1. 定义一个函数,在函数中使用yield关键字
  2. 调用函数,接收调用结果
  3. 得到的结果就是生成器
  4. 借助于next()、__next()__得到元素
def func():n = 0while True:n += 1yield n # 相当于return n + 暂停g = func()
print(g) #<generator object func at 0x000002687B393DC8>
print(next(g)) #1
print(next(g)) #2
print(next(g)) #3

2.3 生成器的作用

实现线程下协程的操作

def task1(n):for i in range(n):print("正在听第{}首歌".format(i))yield Nonedef task2(n):for i in range(n):print("正在搬第{}块转".format(i))yield Noneg1 = task1(5)
g2 =task2(5)while True:try:g1.__next__()g2.__next__()except:pass

3. 迭代器

3.1 可迭代对象

生成器、元组、列表、字典、集合、字符串都是可迭代的

判断是否可迭代可用方法isinstance()

3.2 迭代器的概念

迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。

迭代器只能往前不会后退。

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

可迭代对象不一定是迭代器,列表是可迭代对象,但不是迭代器;生成器是可迭代对象,也是是迭代器

3.3 迭代器的创建

通过iter()函数将可迭代对象变成迭代器

list = [1,3,4,6]
list1 = iter(list)print(next(list1))
print(next(list1))
print(next(list1))

Python:列表推导式、生成器、迭代器相关推荐

  1. Python 列表推导式 - Python零基础入门教程

    目录 一.Python 列表推导式简介 二.Python 列表推导式语法 三.Python 列表推导式练习 1.Python 列表推导式案例一 2.Python 列表推导式案例二 3.Python 列 ...

  2. 【技能树共建】Python 列表推导式

    Python 列表推导式是什么 列表推导式是 Python 语言特有的一种语法结构,也可以看成是 Python 中一种独特的数据处理方式, 它在 Python 中用于 转换 和 过滤 数据. 其语法格 ...

  3. python关键字列表的表达式,python 列表推导和生成器表达式的使用

    序列 序列是指一组数据,按存放类型分为容器序列与扁平序列,按能否被修改分为不可变序列与可变序列. 容器序列与扁平序列 容器序列存放的是对象的引用,包括list.tuple.collections.de ...

  4. python 列表推导式csv_Python 列表推导式

    在本教程中,我们将学习使用 Python 列表推导. Python 列表推导式 列表推导式是一种基于现有列表创建列表的语法结构. 列表推导式为创建列表提供了一种简洁的方法. 常见的要求是创建新列表,其 ...

  5. python列表推导式是什么

    列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表. 它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句.那个表达式可以是任意的, ...

  6. python列表推导式中使用if语句及他们的等价形式

    python列表推导式中使用if语句及他们的等价形式 在python的列表推导式中使用if语句有两种形式: # 方式1: 起过滤作用 [expr(x) for x in li if cond(x)] ...

  7. python列表推导式生成随机数_python 【迭代器 生成器 列表推导式】

    python [迭代器  生成器  列表推导式] 一.迭代器 1.迭代器 如何从列表.字典中取值的 index索引 ,key for循环 凡是可以使用for循环取值的都是可迭代的 可迭代协议 :内部含 ...

  8. python列表推导式实现从1加到100_python之生成器和列表推导式

    一.生成器函数 1.生成器:就是自己用python代码写的迭代器,生成器的本质就是迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现). 2.用以下两种方式构建一个生成器: ...

  9. python三元表达式求值_python 三元表达式的 列表推导式 生成器推导式

    python中三元表达式的语法如下 ===if else result = x if condition else y 另外一种三元表达式,比较少见 result = (x, y)[condition ...

  10. Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

    本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...

最新文章

  1. 转-项目管理心得:一个项目经理的个人体会、经验总结
  2. mysql子查询是什么_mysql子查询
  3. itext实现HTML转换为PDF
  4. 选择多级分类_② 供应商管理(分类、评估、选择、绩效、集成、供应商过多的对策、多级供应商管理)...
  5. python3 logging模块_python3中使用logging模块写日志,中文乱码,如何解决?
  6. 在危机中呈现转机的网络管理
  7. hexo之next主题添加分类
  8. [转贴] 刷机利器 Rom Manager 的简单用法
  9. php制作judge评测机,HelloJudge2-Judger
  10. 关于阿里云服务器租用费用的介绍
  11. auto.js制作简易音乐app(一)
  12. Android wps自定义功能,完美兼容安卓4.2新增多项功能 WPS移动版升级至5.2
  13. 社区团购怎么做_分享有哪些方法可以做社区团购小程序
  14. 双十一特辑:Python采集商品数据,实时了解商品价格
  15. 【Excel函数】相对定位与绝对定位
  16. 软考——程序设计语言概述
  17. Pycharm 注册码
  18. 作文 深海机器人_作文机器人(共5篇)
  19. 题解——两种算法解Leetcode题库第977题(暨双指针法小结)
  20. Solarwinds 系列介绍

热门文章

  1. 网络购车平台“一成首付”又出新模式
  2. 计算机网络-分组交换与电路交换
  3. 电阻的温度系数需要考虑么
  4. AD-SAL与MD-SAL的比较
  5. 20155314 2016-2017-2 《Java程序设计》第9周学习总结
  6. 《时は,走り出す》-《时光奔流》 EVA同人·绝品老文……
  7. 《HOP-Matting:Hierarchical Opacity Propagation for Image Matting》论文笔记
  8. 利用MaxCompute部署股票交易策略
  9. 回滚保存点后究竟发生了什么?
  10. 2021-05-16刷题