迭代器

作者: 智勇双全的小六 | 来源:发表于2018-04-23 15:05 被阅读0次

我发现我之前还是没有理解迭代器。

最初的理解

定义的函数中有 yield 就是一个迭代器。

def one_iter():
  for i in range(10):
    yield i

yield 只是暂时将进程挂起

yield 只是暂时将进程挂起,再次执行时会从第一次挂起的地方继续往下执行,而 return 是完全中断了函数。这是 yield 和 return 不同的地方。

def one_iter():
  for i  in range(3):
    yield i 
    print(i)

for i in one_iter():
  pass
  # continue

输出:

// 0
// 1
// 2

如果打上断点观察,会发现更加明显。

每次从迭代器中迭代元素都会指针移动

迭代器和读取文件一样,内部应该维护着一个指针,每迭代一次,指针就会指向下一个元素,指针指向最后一个元素后,整个迭代就会结束。

文件迭代

def iterable():
    with open(fileName, encoding="utf8") as f:
        for i in f.read():
            print(i)
        print("+++++++++++++++++++++++++++")
        for i in f.read():
            print(i)

for 和 next 连用
for 其实和 next 一样,每次迭代都会让指针移动

def study_next():
    a = iter(range(3))
    next(a)
    for i in a:
        print(f"for: {i}")

for 循环

def dropwhile(predicate, iterable):
    # dropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1
    iterable = iter(iterable)
    for x in iterable:
        if not predicate(x):
            yield x
            break
    for x in iterable:
        yield x

相关文章

  • 迭代器

    本节实验我们将为大家讲解迭代器,主要介绍 5 种常见迭代器:输入、输出迭代器,前向逆向迭代器,双向迭代器和随机迭代...

  • 迭代器与生成器

    迭代(iteration)与可迭代(iterable) 迭代器 迭代器协议(iterator protocol) ...

  • 10.迭代器与生成器

    一、迭代器 1). 迭代器概述 类比Java中的迭代器,参考迭代器模式https://www.jianshu.co...

  • 9 ES6 迭代器、生成器

    1、Iterator迭代器 ->遵循迭代模式思想实现,分为内部迭代器、外部迭代器,聚焦点:添加迭代接口 (1).迭...

  • C++boolan part3_week4

    1. 迭代器 1.1 迭代器的种类 使用随机访问迭代器的容器:array, vector,deque使用双向迭代器...

  • 迭代器模式

    内部迭代器和外部迭代器 简单地讲,内部迭代器就是类似 forEach 的迭代器,其内部迭代逻辑已经制定好,只要传入...

  • vector erase的用法

    正向迭代器: 反向迭代器:

  • 10 python中的迭代器和生成器

    1 迭代器 遵循了迭代器协议的对象为迭代器,即内部调用iter()方法转化成的对象为成迭代器。 1.1 迭代器的特...

  • 第7章迭代器模式

    第7章迭代器模式 7.1 jQuery中的迭代器 7.2 实现自己的迭代器 7.3 内部迭代和外部迭代 1内部迭代...

  • 我们来讲讲Python的迭代器

    迭代器 迭代器的作用:迭代器的作用就是迭代,可以让不是序列但是表现出序列行为,例如迭代字典的键,文件的行 迭代器的...

网友评论

      本文标题:迭代器

      本文链接:https://www.haomeiwen.com/subject/wvzklftx.html