当前位置:网站首页>How to understand Python iterators and generators?
How to understand Python iterators and generators?
2020-11-06 20:07:00 【SXXpenguin】
How to understand Python Iterators and generators ? stay Python in , Use for ... in ... It can be done to list、tuple、set and dict Data types are iterated , You can filter out all the data . as follows :
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、 iterator
The string , list , Use built-in functions iter Convert to an iteratable object , Use next keyword , Iteratable objects take one value at a time . Like the following code :
nums = [1,2,3,4]
nums = iter(nums)
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums))
Output
1
2
3
4
If it exceeds the length of the data , Will be an error StopIteration
nums = [1,2,3,4]
nums = iter(nums)
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums)) # Over data length , Report errors StopIteration
2、 generator
Using generators, you can create iterators . The generator mainly uses yeild keyword , Every time you call next When it comes to yeild The definition of the corresponding . for example : We need to take 10~20 Data between , In steps of 2, You can use the following code
for x in range(10,20,2):
print(x)
But if the step size is set to 0.5, The following code :
for x in range(10,20,0.5):
print(x)
Will be an error
TypeError: 'float' object cannot be interpreted as an integer
This is the time , We can use The generator comes from defining a function
def drange(start,stop,step):
x = start
while x< stop:
yield x
x += step
for x in drange(10,20,0.5):
print(x)
Another example :
Given a string , Flashback to arrange :
def reverse(data):
for x in range(len(data)-1,-1,-1):
yield data[x]
for x in reverse('gold'):
print(x)
See here , I believe that we can understand Python Iterators and generators have a certain understanding . More about dry goods , In the erudite Valley IT Training platform , From zero basis to advanced promotion, the learning content of each stage of learning is waiting for you !
Zhengzhou painless people hospital which good http://fk.zztjyy.com/
Zhengzhou see gynecology which hospital is good http://www.zztjfk.com/
Zhengzhou see gynecology which good http://www.xasgfuke.cn/
版权声明
本文为[SXXpenguin]所创,转载请带上原文链接,感谢
边栏推荐
- From zero learning artificial intelligence, open the road of career planning!
- Lane change detection
- [C] (original) step by step teach you to customize the control element - 04, ProgressBar (progress bar)
- C語言I部落格作業03
- Python Jieba segmentation (stuttering segmentation), extracting words, loading words, modifying word frequency, defining thesaurus
- 零基础打造一款属于自己的网页搜索引擎
- Our best practices for writing react components
- 【自学unity2d传奇游戏开发】地图编辑器
- Pollard's Rho algorithm
- DRF JWT authentication module and self customization
猜你喜欢
[C / C + + 1] clion configuration and running C language
理解格式化原理
With the advent of tensorflow 2.0, can pytoch still shake the status of big brother?
游戏开发中的新手引导与事件管理系统
Construction of encoder decoder model with keras LSTM
DRF JWT authentication module and self customization
文件过多时ls命令为什么会卡住?
It is really necessary to build a distributed ID generation service
vue-codemirror基本用法:实现搜索功能、代码折叠功能、获取编辑器值及时验证
What are the criteria for selecting a cluster server?
随机推荐
一篇文章带你了解CSS 渐变知识
一篇文章教会你使用Python网络爬虫下载酷狗音乐
What to do if you are squeezed by old programmers? I don't want to quit
The difference between gbdt and XGB, and the mathematical derivation of gradient descent method and Newton method
Introduction to quantitative investment and Trading (Python introduction to financial analysis)
Installing ns-3 on ubuntu18.04
WeihanLi.Npoi 1.11.0/1.12.0 Release Notes
How to hide part of barcode text in barcode generation software
每个大火的“线上狼人杀”平台,都离不开这个新功能
Analysis of partial source codes of qthread
A brief history of neural networks
代码生成器插件与Creator预制体文件解析
5.5 controlleradvice notes - SSM in depth analysis and project practice
有了这个神器,快速告别垃圾短信邮件
Who says cat can't do link tracking? Stand up for me
Python Jieba segmentation (stuttering segmentation), extracting words, loading words, modifying word frequency, defining thesaurus
Basic usage of GDB debugging
Introduction to the structure of PDF417 bar code system
What is the difference between data scientists and machine learning engineers? - kdnuggets
6.1.1 handlermapping mapping processor (1) (in-depth analysis of SSM and project practice)