'''1.什么是生成器
生成器:生成器是一个特殊的迭代器,定义生成器可以用通过
2.如何构建生成器
定义生成器可以通过两种方式:生成器表达式以及函数的形式
'''# 生成器表达式
res = (i for i inrange(5))
# 函数表达式# 如果要用函数体的形式实现生成器的话就需要用到yielddeffunc():
print('one...')
yield111print('two...')
yield222print('three..')
yield333# yield 对比 return# 相同点:都可以返回任意类型、任意个数的值# 不同点:return只能返回值一次值,函数就立即结束# yield可以返回多次值,yield可以暂停函数的运行# 在python中 函数内但凡出现yield关键字,再调用函数不会立即执行函数体代码,而会返回一个# # 生成器对象,生成器对象本质就是一个自定义的迭代器对象# 自定义range生产器defmy_range(stat,stop,n):
res = stat
x = stat
while x < stop:
x += n
yield res
res += n
for i in my_range(7, 20, 2):
print(i)
'''1.什么时三元表达式
在Python语言中,也有三元运算符。不过Python的三元运算符和java以及C#有所区别,语法格式为:
表达式1 if 条件表达式 else 表达式2
当表达式返回True时,返回结果表达式1,否则返回结果表达式2。示例:
1
c = a if a < b else b
------来自百度百科,python三元运算符
特点:
1.它允许我们用单行表达式替换简单的if语句。
2.通过减少代码行数来提高代码的可读性。
'''defmax2(x,y):
if x > y:
return x
else:
return y
# 三元表达式
res = x if x > y else y
print(res)
生成式
# 传统生成列表
l = []
for i inrange(10):
l.append(i)
print(l)
>>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 采用列表生成式
l = [i for i inrange(10)]
print(l)
>>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 字典生成式
d = {'k%s' % i:i for i inrange(3)}
print(d)
>>
{'k0': 0, 'k1': 1, 'k2': 2}
# 集合生成式
s = {i for i inrange(3)}
print(s)
>>
{0, 1, 2}
##没有元组生成式,我们可以将列表通过tupe()方法得到
res = (i for i inrange(5)) # 这是生成器# 如何巧妙使用生成器,在面对读写大文件时withopen('a.txt','rt',endcoding='utf8') as f: # a是超大文件,如果一次性读出,肯定超出内存
res = sum(len(len) for line in f )
print(res)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端