温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-28 11:04:11 来源:亿速云 阅读:183 作者:Leah 栏目:编程语言

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

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 定义的对应。例如:我们需要取 1020之间的数据,步长为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)

 

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI