python生成器和迭代器理解_怎么理解Python迭代器与生成器?

怎么理解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培训平台,从零基础到进阶提升各个学习阶段的学习内容都在等着你!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值