当前位置: 首页 > 编程笔记 >

Python迭代器与可迭代与生成器

程胤运
2023-03-14
本文向大家介绍Python迭代器与可迭代与生成器,包括了Python迭代器与可迭代与生成器的使用技巧和注意事项,需要的朋友参考一下

示例

一个迭代是一个对象,可以返回一个迭代器。具有状态且具有__iter__  方法并返回迭代器的任何对象都是可迭代的。也可能是没有状态的对象,该对象实现了__getitem__方法。-该方法可以获取索引(从零开始),并IndexError在索引不再有效时引发。

Python的str类是__getitem__可迭代的示例。

一个迭代是当你调用产生序列中的下一个值的对象,next(*object*)一些对象。而且,任何带有__next__方法的对象都是迭代器。迭代StopIteration器用完之后会引发迭代器,并且此时不能重复使用。

迭代类:

可迭代的类定义__iter__和__next__方法。可迭代类的示例:

class MyIterable:

    def __iter__(self):

         return self

    def __next__(self):
         #code

#旧版python中的经典可迭代对象__getitem__仍受支持...
class MySequence:

    def __getitem__(self, index):

         if (condition):
             raise IndexError
         return (item)

 #可以通过使用iter(MySequence())产生一个普通的`iterator`实例

尝试实例化collections模块中的抽象类以更好地了解这一点。

例:

Python 2.x 2.3
import collections
>>> collections.Iterator()
>>> TypeError: Cant instantiate abstract class Iterator with abstract methods next
Python 3.x 3.0
>>> TypeError: Cant instantiate abstract class Iterator with abstract methods __next__

通过执行以下操作来处理Python 2对Python 2中可迭代类的兼容性:

Python 2.x 2.3
class MyIterable(object): #或collections.Iterator,我建议...。

     ....

     def __iter__(self): 

          return self

     def next(self): #code

     __next__ = next

这两个现在都是迭代器,可以循环通过:

ex1 = MyIterableClass()
ex2 = MySequence()

for (item) in (ex1): #code
for (item) in (ex2): #code

生成器是创建迭代的简单方法。生成器迭代器,迭代器是可迭代的。

 类似资料:
  • 本文向大家介绍python生成器与迭代器详解,包括了python生成器与迭代器详解的使用技巧和注意事项,需要的朋友参考一下 列表生成式: 例一: a = [i+1 for i in range(10)] print(a) 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 例二: L = [1, 2, 3, 4, 5] print([i*i for i in L if i>3]

  • 本文向大家介绍python迭代器与生成器详解,包括了python迭代器与生成器详解的使用技巧和注意事项,需要的朋友参考一下 例子 老规矩,先上一个代码: 这个东西输出可以脑补一下, 结果是[20,21,22,23], 而不是[10, 11, 12, 13]。 当时纠结了半天,一直没搞懂,后来齐老师稍微指点了一下, 突然想明白了--真够笨的,唉。。好了--正好趁机会稍微小结一下python里面的生成

  • 许多编程语言都做了这样的转变:迭代集合中的数据不再使用需要初始化变量并作为索引的 for 循环,转而使用迭代器(iterator)对象来程序化地返回集合中下一位置的项。迭代器使得集合的操作变得更容易,ECMAScript 6 也将其添加到了 JavaScript 当中。当迭代器和数组方法以及新添加的集合类型(如 set 和 map)结合之后,它就成为了高效处理数据的关键,而且该语言中很多部分都有迭

  • 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:iter() 和 next()。 字符串,列表或元组对象都可用于创建迭代器: 实例(Python 3.0+)>>>list=[1,2,3,4] >>> it = iter(

  • 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:iter() 和 next()。 字符串,列表或元组对象都可用于创建迭代器: 实例(Python 3.0+)>>>list=[1,2,3,4] >>> it = iter(

  • 问题内容: 在一次采访中有人问我,使用迭代器使用for循环有什么好处,或者使用循环比迭代器有什么好处? 任何人都可以回答这个问题,以便将来如果我遇到类似的问题,那么我可以回答 问题答案: 首先,有两种for循环,它们的行为非常不同。一种使用索引: 这种循环并非总是可能的。例如,列表具有索引,而集合没有索引,因为它们是无序集合。 另一个foreach循环在幕后使用Iterator: 这适用于每种It