欢迎光临散文网 会员登陆 & 注册

python:for loop的对象必须是一个可迭代对象

2022-03-17 00:56 作者:云汉含星  | 我要投稿

在python中经常会遇到这样的一个代码:

list是一个有序的列表。我们可以根据顺序来for循环遍历整个list。使用string和tuple的时候也可以这样子for loop 遍历。这是非常符合代码直觉的,因为遍历的都是有序的对象。然而我们使用字典的时候,无序的对象我们依然能够进行for loop遍历。

因为for loop要求对象是一个可迭代的对象(iterable)。

上面的代码使用子这个仍然能够顺利的打印出列表中的元素。因为列表是一个可迭代的对象(iterable)而且也是迭代器(iterator)我们可以根据迭代器的next(it)函数去迭代,依次访问每一个元素。

总的来说:iterable和iterator的定义是相近的,在使用的时候可以把iterable当成一个container,而iterator是一个迭代器,可就和索引一样,可以通过next()方法依次获取这个容器中的每一个元素。

一般来说一个iterable对象都要求他是一个iterator。而一个iterator也要求他是一个iterable对象。

用链表举例子:自己定义一个可迭代对象:

这个代码就是链表,可通过for loop使用迭代器迭代遍历整个链表

也可以显示的使用迭代器

也可以这样子更直接的使用迭代器。next(it)获取下一个迭代对象。


其实在C++的STL一直在使用迭代器,无论是向量、栈、链表,还是队列,都是显式的利用迭代器。使用的方法都是需要申明一个迭代器,然后让这个可迭代对象生成一个iterator。这个迭代器就可以和索引一样遍历可迭代对象的所有元素,在C++中的迭代器有正向,反向,双向。迭代器的属性也有begin,end。迭代的时候直接it++或者it--进行迭代。

下面是C++代码使用iterator遍历向量vector



python:for loop的对象必须是一个可迭代对象的评论 (共 条)

分享到微博请遵守国家法律