python迭代器

迭代器

迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

 可迭代对象

以直接作用于 for 循环的数据类型有以下几种:

一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等;

一类是 generator ,包括生成器和带 yield 的generator function。

这些可以直接作用于 for 循环的对象统称为可迭代对象: Iterable 。

# 列表可迭代
for a in [1,2,3,4]:
    print(a)
# 元组可迭代
for b in (1,2,3,4):
    print(b)
# 字符串可迭代
for c in 'abcdefg':
    print(c)
# 字典可迭代
for d in {'name':'辉辉咯', 'age':23}:
    print(d)
# 集合可迭代
for e in {1,2,3,4}:
    print(e)
# 生成器可迭代
for f in (x for x in range(5)):
    print(f)
# 带 yield 的generator function 可迭代
def GeneratorFunction():
    i = 0
    while i < 5:
        yield i
        i += 1
for g in GeneratorFunction():
    print(g)

print('-' * 50)

# 可以使用 isinstance() 判断一个对象是否是 Iterable 对象
from collections import Iterable, Iterator
print(isinstance([], Iterable)) #True
print(isinstance({}, Iterable)) #True
print(isinstance('', Iterable)) #True

# 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator,所以生成器肯定是迭代器
# 可以使用 isinstance() 判断一个对象是否是 Iterator 对象
# 从下面输出结果可以看出可迭代的对象,不一定是迭代器
print(isinstance([], Iterator)) #False
print(isinstance({}, Iterator)) #False
print(isinstance('', Iterator)) #False

# 生成器都是 Iterator 对象,但 list 、 dict 、 str 虽然是 Iterable ,却不是 Iterator
# 把 list 、 dict 、 str 等 Iterable 变成 Iterator 可以使用 iter() 函数:
print(isinstance(iter([]), Iterator)) #True
print(isinstance(iter({}), Iterator)) #True
print(isinstance(iter(''), Iterator)) #True

总结

  • 凡是可作用于 for 循环的对象都是 Iterable 类型;
  • 凡是可作用于 next() 函数的对象都是 Iterator 类型
  • 集合数据类型如 list 、 dict 、 str 等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得一个 Iterator 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值