Python迭代器与生成器怎么理解

Python迭代器与生成器怎么理解?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

万安ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

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迭代器与生成器怎么理解
网页链接:http://scyanting.com/article/jcdhpd.html