可以将iterable宽松地定义为一个对象,该对象在传递给内置方法时将生成迭代器iter()
。有两个条件,一个对象是可迭代的,该类的对象需要定义两个实例方法:__ len__和__getitem__。传递给method时满足这些条件的对象iter()
将生成迭代器。
让我们了解以下示例,了解可迭代的-
string = "Nhooo" for char in string: print (char)
输出结果
T u t o r i a l s p o i n t
在代码上方使用__getitem __(index)方法,该方法将在index指定的位置返回元素。
因此,我们上面的代码-
从索引0开始
呼叫字串。__getitem __(索引)
引发IndexError?停止
循环的运行主体
增量索引,返回到步骤2。
迭代器被定义为通过内部状态变量对交互进行计数的对象。在这种情况下,当迭代越过最后一项时,该变量不会设置为零,而是StopIteration()
会引发该值以指示迭代结束。这也意味着被迭代的项目将仅被迭代一次,如下面的示例所示:
my_list = ['itemOne', 'nhooos'] iterators_of_some_list = iter(my_list) for i in iterators_of_some_list: print(i) for j in iterators_of_some_list: # doesn't work print(j) #However for k in my_list: print(k) for l in my_list: # it worked print(l)
输出结果
itemOne nhooos itemOne nhooos itemOne nhooos
上面的代码成立,因为iter()
迭代器上的方法返回了自己(即记住当前状态)。因此,在上面我们有一个类似于“ for”的循环实现以终止它。