Python迭代器小坑

我们知道,python的迭代器是通过不断调用next()方法来前进遍历的。

但是我们很少注意,迭代器不能用2次的问题,下面展示了这个问题:

输出:

因为第一次list(it)已经让迭代器前进到了末尾,所以第二次list(it)会得到一个空列表。

单独看这个问题很容易理解,但是放到开发的具体过程中是很容易出现的,一个典型场景如下:

其输出:

这种错误很容易遇到的原因是,我们经常不在乎函数返回的是迭代器还是列表,因此我们很容易在返回迭代器的情况下搞出上述的BUG。

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~