网站首页 > 技术文章 正文
# 列表推导式提供了一种简洁高效的方式来创建列表,
# 生成器表达式则是一种节省内存的方式
# 例子:
# 列表推导式
print([x**2 for x in range(10)])
# 推导式 生成九九乘法表
print("\n".join([" ".join(["{}*{}={}".format(x, y, x*y) for x in range(1,y+1)]) for y in range(1,10)]))
# 生成器:是一种特殊的程序,它可以控制循环的迭代行为,可以暂时性挂起,可以保留局部变量,再次调用时使用。
# 主要使用场景包括:
# 生成器也是一种迭代器,用于迭代一组数据
# 如果序列元素是通过算法推导出来的,可以迭代边循环边计算,不必创建完整的序列 ,可以节省大量空间
# 协程是基于生成器实现的,以在单个线程中实现并发
# 生成器的创建:列表生成式 的 [] 改成 (),就是一个简易生成器
gender =(x for x in range(10) if x % 2 == 0)
# 生成器的读取
print(next(gender)) # 0
print(next(gender)) # 2
print(next(gender)) # 4
print(next(gender)) # 6
print(next(gender)) # 8
# 超出访问结果,程序会会抛出StopIteration错误
#========================================================
# yield 生成器:
def func(n):
i = 0
while i < n:
yield i ** 2
i+=1;
return '执行结束'
g = func(5)
# 第一种:单个读取数据
print('生成器结果:',next(g))
print('生成器结果:',next(g))
print('生成器结果:',next(g))
print('生成器结果:',next(g))
# 超出访问结果,程序会会抛出StopIteration错误
# 第二种 遍历生成器读取
while True:
try:
result = next(g)
print('生成器结果:',result)
except StopIteration as e:
print('生成器返回:', e.value)
break
# 注:超出生成器的取值返回,程序会报错
# send() 和 yield from
# 发送值到生成器 send()
def echo():
while True:
print("输出值前")
value = yield
print(f"收到值: {value}")
gen = echo()
next(gen) # 初始化生成器,进入循环
gen.send(42) # 输出: 收到值: 42
gen.send(10) # 输出: 收到值: 10
# yield from 在执行过程中,调用其他的生成器
def leaf():
yield '叶'
yield '子'
def branch():
yield '枝'
yield from leaf() # 调用其他生成器
yield '条'
for item in branch():
print(item)
# 协程的定义是可以在某个点暂停执行并在恢复执行时从该点开始的生成器函数。
# 简单的生产者和消费者的协程例子
def consumer():
while True:
d = yield 'data from consumer'
print('[Consumer] get data from producer: %d' % d)
def producer(consumer_obj):
next(consumer_obj)
for count in range(5):
print('[Producer] producing %d' % count)
consumer_obj.send(count)
consumer_obj.close()
c = consumer()
producer(c)
# 利用生成器实现的协程。可以在无锁的情况下实现从 producer() 向 consumer() 传递数据。
# 单独看 consumer() 还是生成器类型,但是整体是借助生成器实现任务的协作控制。
猜你喜欢
- 2025-07-06 Python学不会来打我(19)循环语句while/for的使用方法与实战案例
- 2025-07-06 python入门-day5-循环语句(python循环语句总结)
- 2025-07-06 Python循环:重复的力量(python中如何重复循环程序)
- 2025-07-06 编程小白学做题:Python 的经典编程题及详解,附代码和注释(一)
- 2025-07-06 Python列表推导式:让你的代码优雅如诗!
- 2025-07-06 Python中while循环详解(python中while循环的执行过程)
- 2025-07-06 Python自学|while循环的使用方法|99乘法口诀表倒着打印
- 2025-07-06 用while循环做一个九九乘法表(用while循环和for循环分别输出九九乘法表)
- 2025-07-06 怎么用三种代码写「九九乘法表」(九九乘法表的代码怎么写)
- 2025-07-06 使用Python实现九九乘法表的打印(利用python打印九九乘法表)
- 07-06Python学不会来打我(19)循环语句while/for的使用方法与实战案例
- 07-06python入门-day5-循环语句(python循环语句总结)
- 07-06Python循环:重复的力量(python中如何重复循环程序)
- 07-06编程小白学做题:Python 的经典编程题及详解,附代码和注释(一)
- 07-06python 简述列表推导式和生成器(python列表举例)
- 07-06Python列表推导式:让你的代码优雅如诗!
- 07-06Python中while循环详解(python中while循环的执行过程)
- 07-06Python自学|while循环的使用方法|99乘法口诀表倒着打印
- 274℃Python短文,Python中的嵌套条件语句(六)
- 272℃python笔记:for循环嵌套。end=""的作用,图形打印
- 270℃PythonNet:实现Python与.Net代码相互调用!
- 265℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 265℃Python实现字符串小写转大写并写入文件
- 125℃原来2025是完美的平方年,一起探索六种平方的算吧
- 106℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 104℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python学不会来打我(19)循环语句while/for的使用方法与实战案例
- python入门-day5-循环语句(python循环语句总结)
- Python循环:重复的力量(python中如何重复循环程序)
- 编程小白学做题:Python 的经典编程题及详解,附代码和注释(一)
- python 简述列表推导式和生成器(python列表举例)
- Python列表推导式:让你的代码优雅如诗!
- Python中while循环详解(python中while循环的执行过程)
- Python自学|while循环的使用方法|99乘法口诀表倒着打印
- 用while循环做一个九九乘法表(用while循环和for循环分别输出九九乘法表)
- 怎么用三种代码写「九九乘法表」(九九乘法表的代码怎么写)
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)