所在的位置: C++ >> C++资源 >> Python迭代器和C迭代器,

Python迭代器和C迭代器,

眼角白癜风好治吗 http://pf.39.net/bdfyy/dbfzl/160319/4793213.html

做家

樱雨楼

责编

胡巍巍

绪论

迭代器(Iterator)是Python以及其余百般编程言语中的一个非往往见且要害,但又满盈着秘密感的观念。不管是Python的根底内置函数,依旧百般高档话题,都随地看来迭代器的身影。

那末,迭代器到底是何如的一个观念?其又为甚么会遍及存在于百般编程言语中?本文将基于C++与Python,深入议论这一系列题目。

甚么是迭代器?咱们为甚么要哄骗迭代器?

甚么是迭代器?当我入门Python的光阴,我将迭代器知道为一种也许放在“forxxxin…”的“…”场所的东西;后来跟着进修的深入,我相识到迭代器即是一种实行了迭代器协定的目标;进修C++时,我相识到迭代器是一种举动和指针相同的目标…

底细上,迭代器是一个伴有着迭代器形式(IteratorPattern)而生的笼统观念,其目标是别离并统一不同的数据机关拜候个中数据的方法,进而使得百般须要拜候数据机关的函数,关于不同的数据机关也许维持雷同的接口。

在良多议论Python迭代器的书本与文章中,我看到如许两种观念:1.迭代器是为了检朴数据机关所形成的内存;2.遍历迭代器效率更高。

这两点结论都是很禁止确的:首先,除了某些未必义在数据机关上的迭代器(如文献句柄,itertools模块的count、cycle等无尽迭代器等),其余迭代器都界说在某种数据机关上,因而不存在检朴内存的上风;其次,由于迭代器是一种高度泛化的实行,其须要在每一次迭代器挪移时都做一些额外办事(如Python须要继续探测迭代器能否耗尽,并施行反常监测;C++的deque容器须要对其在堆上用于保存的多段不赓续内存施行连接等),故遍历迭代器的效率确定低于或险些逼近于直接遍历容器,而不太也许高于直接遍历原容器。

综上所述,迭代器存在的意义,不是为了空间换功夫,也不是为了功夫换空间,而是一种适配器(Adapter)。迭代器的存在,使得咱们也许哄骗一样的for语句去遍历百般容器,或是像C++的algorithm模块所示的那样,哄骗一样的接口去责罚百般容器。

这些容器可于是一个赓续内存的数组或列表,或是一个多段赓续内存的deque,乃至是一个彻底不赓续内存的链表或是哈希表等等,咱们彻底不须要


转载请注明:http://www.aierlanlan.com/rzgz/872.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了