当前位置:
首页 > temp > 简明python教程 >
-
python基础(14):生成器、列表推导式(2)
send("胡辣汤")
print(ret2)
ret3 = gen.send("狗粮")
print(ret3)
ret4 = gen.send("猫粮")
print(ret4)
send和__next__()区别:
1. send和next()都是让⽣成器向下走⼀次。
2. send可以给上⼀个yield的位置传递值,不能给最后⼀个yield发送值,在第⼀次执⾏⽣成器代码的时候不能使⽤send()。
⽣成器可以使⽤for循环来循环获取内部的元素:
- def func():
- print(111)
- yield 222
- print(333)
- yield 444
- print(555)
- yield 666
- gen = func()
- for i in gen:
- print(i)
- 结果:
- 111
- 222
- 333
- 444
- 555
- 666
回到顶部(go to top)
2. 列表推导式, ⽣成器表达式以及其他推导式
⾸先我们先看⼀下这样的代码,给出⼀个列表,通过循环,向列表中添加1-14 :
- lst = []
- for i in range(1, 15):
- lst.append(i)
- print(lst)
替换成列表推导式:
- lst = [i for i in range(1, 15)]
- print(lst)
列表推导式是通过⼀⾏来构建你要的列表,列表推导式看起来代码简单,但是出现错误之后很难排查。
列表推导式的常⽤写法:
[ 结果 for 变量 in 可迭代对象]
例,从python1期到python14期写入列表lst:
- lst = ['python%s' % i for i in range(1,15)]
- print(lst)
我们还可以对列表中的数据进⾏筛选
筛选模式:
[ 结果 for 变量 in 可迭代对象 if 条件 ]
- # 获取1-100内所有的偶数
- lst = [i for i in range(1, 100) if i % 2 == 0]
- print(lst)
⽣成器表达式和列表推导式的语法基本上是⼀样的,只是把[]替换成()
- gen = (i for i in range(10))
- print(gen)
- 结果:
- <generator object <genexpr> at 0x106768f10>
打印的结果就是⼀个⽣成器,我们可以使⽤for循环来循环这个⽣成器:
- gen = ("麻花藤我第%s次爱你" % i for i in range(10))
- for i in gen:
- print(i)
⽣成器表达式也可以进⾏筛选:# 获取1-100内能被3整除的数
- gen = (i for i in range(1,100) if i % 3 == 0)
- for num in gen:
- print(num)
- # 100以内能被3整除的数的平⽅
- gen = (i * i for i in range(100) if i % 3 == 0)
- for num in gen:
- print(num)
- # 寻找名字中带有两个e的⼈的名字
- names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven','Joe'], ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
- # 不⽤推导式和表达式
- result = []
- for first in names:
- for name in first:
- if name.count("e
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数