python之迭代器

python

1. 可迭代对象是什么?

字面意思:可以重复迭代的工具。

专业角度: 内部含有'__iter__'并且含有"__next__"方法的对象,就是迭代器

2. 可迭代对象如何转化成迭代器

li = [1, 2, 3, 4, 5

obj = iter(li) # 转换方法 # iter是一个内置函数

print(obj)

# 输出结果

<list_iterator object at 0x10fa7d4a8> # 这个就是一个迭代器

3. 迭代器可以利用next()进行迭代取值

li = [1, 2, 3, 4, 5]

obj = iter(li)

print(obj)

print(next(obj))

print(next(obj))

print(next(obj))

print(next(obj))

print(next(obj)) # 每执行一次print(next(obj)) 就取一个值,取到最后再去取值的时候取不到了就会报错

4. 迭代器的优缺点和特性

迭代器优点:

  1. 非常节省内存。
  2. 惰性机制。

迭代器缺点:

  1. 不直观。
  2. 操作不灵活。
  3. 效率相对低。

特性:

next执行会停止在最后执行的值的后面,下次执行会继续往后取值

l1 = [22, 33, 44, 55, 66, 77]

obj = iter(l1)

for i in range(3):

print(next(obj))

# 输出结果

22

33

44

for i in range(2):

print(next(obj))

# 输出结果

55 # 上次执行完毕后,就停止在上次那个位置后面,再次执行继续往下走

66

5.利用while循环,模拟for循环内部循环可迭代对象的机制

li = [1, 2, 3, 4, 5]

# 1,先要将一个可迭代对象转换成一个迭代器

obj = iter(li)

while 1:

try: # 2,然后使用调试模式

print(next(obj)) # 3,接着使用netx开始一个一个取值

except StopIteration: # 4,因为迭代器的特性,取值完毕后取不到会报错,所以如果遇到该StopIteration报错就退出循环

break

# 输出结果

1

2

3

4

5

利用while循环,模拟for循环内部循环可迭代对象的机制。

  1. 先要将可迭代对象转化成迭代器。
  2. 利用next对迭代器进行取值。
  3. 利用异常处理try一下防止报错。

6. 可迭代对象与迭代器的对比

可迭代对象:

​ 可迭代对象是一个操作比较灵活,直观,效率相对高,但是比较占用内存的数据集。

迭代器:

​ 迭代器是一个非常节省内存,满足惰性机制,但是效率相对低,操作不灵活的数据集。

以上是 python之迭代器 的全部内容, 来源链接: utcz.com/z/388072.html

回到顶部