python 迭代器/生成器

**

迭代器

**
可迭代对象:可调用__iter__()方法的对象,大部分对象都是可迭代的

string='hello world'
print(string.__iter__())
输出:
<str_iterator object at 0x0311CB10>

容器:•容器是一系列元素的集合,str、list、set、dict、file、sockets对象都可以看作是容器,容器都可以被迭代(用在for,while等语句中),因此他们被称为可迭代对象。

迭代器:将可迭代对象通过iter方法放入一个容器中

基本方法:
生成迭代器:iter(iterable_object)
获取迭代器内数据:iter_generator.next()

生成迭代器:

string='hello world'
it=iter(string)
print(next(it))

print(type(it))
#输出:
h
<class 'str_iterator'>

迭代器的特点:
迭代器对象从集合的第一个元素开始访问,每个元素只能访问一次,知道结束,无法循环访问,超过可访问的次数即报错

string=[1,2,3,4]
it=iter(string)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
输出:
1
2
3
4
Traceback (most recent call last):
  File "C:\Users\高顿\Desktop\myblog.py", line 7, in <module>
    print(next(it))
StopIteration

生成器

生成器:生成器其实是一种特殊的迭代器
特征:一个函数,不用return返回,而用yield返回,返回的是一个迭代器

#用生成器
def mygenerator():
    for i in range(100):
        if i >50:
            yield i

f=mygenerator()
print(next(f))
输出:
51
*************************************
#用普通函数
def mygenerator():
    s=[]
    for i in range(100):
        if i >50:
            s.append(i)
    return s
f=mygenerator()
print(f)
    
#输出:
[51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

可以看出,使用生成器,可以省代码,更简洁。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值