当前位置:网站首页>怎么理解Python迭代器与生成器?
怎么理解Python迭代器与生成器?
2020-11-06 20:07:00 【SXXpenguin】
怎么理解Python迭代器与生成器?在Python中,使用for ... in ... 可以对list、tuple、set和dict数据类型进行迭代,可以把所有数据都过滤出来。如下:
for element in [1, 2, 3]:
print(element)
for element in (1, 2, 3):
print(element)
for key in {'one':1, 'two':2}:
print(key)
for char in "123":
print(char)
for line in open("myfile.txt"):
print(line, end='')
1、迭代器
对字符串,列表,使用内置函数 iter 转化为可迭代对象, 使用next关键字,可迭代对象每次取其中的一个值。如下面代码:
nums = [1,2,3,4]
nums = iter(nums)
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums))
输出
1
2
3
4
如果超出数据的长度,将会报错 StopIteration
nums = [1,2,3,4]
nums = iter(nums)
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums)) # 超过数据长度,报错 StopIteration
2、生成器
使用生成器可以创建迭代器。生成器主要使用 yeild 关键字,每次调用 next 时会与yeild 定义的对应。例如:我们需要取 10~20之间的数据,步长为2,可以使用如下code
for x in range(10,20,2):
print(x)
但是如果步长设置为 0.5,如下代码:
for x in range(10,20,0.5):
print(x)
将会报错
TypeError: 'float' object cannot be interpreted as an integer
这个时候,我们就可以使用 生成器来自定义一个函数
def drange(start,stop,step):
x = start
while x< stop:
yield x
x += step
for x in drange(10,20,0.5):
print(x)
再举一个例子:
给定一个字符串,倒叙排列:
def reverse(data):
for x in range(len(data)-1,-1,-1):
yield data[x]
for x in reverse('gold'):
print(x)
看到这里,相信大家对于理解Python迭代器与生成器已经有了一定的理解。关于更多的干货内容,尽在博学谷IT培训平台,从零基础到进阶提升各个学习阶段的学习内容都在等着你!
郑州无痛人流医院哪家好http://fk.zztjyy.com/
郑州看妇科哪家医院好http://www.zztjfk.com/
郑州看妇科哪家好http://www.xasgfuke.cn/
版权声明
本文为[SXXpenguin]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4531268/blog/4705782
边栏推荐
- 用Keras LSTM构建编码器-解码器模型
- WeihanLi.Npoi 1.11.0/1.12.0 Release Notes
- JetCache埋点的骚操作,不服不行啊
- Kitty中的动态线程池支持Nacos,Apollo多配置中心了
- Cocos Creator 原始碼解讀:引擎啟動與主迴圈
- iptables基礎原理和使用簡介
- Anomaly detection method based on SVM
- drf JWT認證模組與自定製
- windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数)
- 【事件中心 Azure Event Hub】Event Hub日誌種發現的錯誤資訊解讀
猜你喜欢
神经网络简史
通过深层神经网络生成音乐
如何将分布式锁封装的更优雅
How to demote a domain controller in Windows Server 2012 and later
Technical director, to just graduated programmers a word - do a good job in small things, can achieve great things
【jmeter】實現介面關聯的兩種方式:正則表示式提取器和json提取器
【C/C++ 2】Clion配置与运行C语言
事半功倍:在没有机柜的情况下实现自动化
如何对Pandas DataFrame进行自定义排序
词嵌入教程
随机推荐
Jmeter——ForEach Controller&Loop Controller
5.4 静态资源映射 -《SSM深入解析与项目实战》
自然语言处理之命名实体识别-tanfordcorenlp-NER(一)
6.9.2 session flashmapmanager redirection management
如何在Windows Server 2012及更高版本中將域控制器降級
6.7 theme resolver theme style parser (in-depth analysis of SSM and project practice)
刚刚,给学妹普及了登录的两大绝学
哇,ElasticSearch多字段权重排序居然可以这么玩
ETCD核心機制解析
【QT】 QThread部分原始碼淺析
微信小程序:防止多次点击跳转(函数节流)
【效能優化】納尼?記憶體又溢位了?!是時候總結一波了!!
Kitty中的动态线程池支持Nacos,Apollo多配置中心了
幽默:黑客式编程其实类似机器学习!
词嵌入教程
Microservices: how to solve the problem of link tracing
X Window System介紹
小白量化投资交易入门课(python入门金融分析)
mongodb(从0到1),11天mongodb初级到中级进阶秘籍
Asp.Net Core學習筆記:入門篇