[Python] 单次迭代带来的问题
2017-08-25 15:33
281 查看
在 Python 3.0 中,诸如内置函数map等函数返回一个单次可迭代对象。也就是说,其返回的迭代器是边获取下一个值,边遗忘前面迭代出来的值的。这点在实际代码中可能会带来意想不到的效果。
例如,我们看下面这段代码:
iter = map(ord, 'abc') print(list(iter)) # => [97, 98, 99] print(list(iter)) # => []
这里我们原本希望用 iter 迭代器每次都产生列表 [97, 98, 99],但实际上它被 list 第一次激活后就无法再从头迭代了。
为了处理这个问题,我们可以将 list 后的结果储存在一个变量里,随后反复使用;或者将产生迭代器的代码封装成函数,每次都使用一个新的迭代器。
# 1 iter = map(ord, 'abc') L = list(iter) print(L) print(L) #2 gen_iter = (lambda : map(ord, 'abc')) print(list(gen_iter())) print(list(gen_iter()))
相关文章推荐
- Python基于生成器迭代实现的八皇后问题示例
- python因为格式带来的问题
- centos6.5升级python带来的问题:yum异常:File "/usr/bin/yum", line 30..........
- python2 递归与迭代的效率问题
- python多进程,进程迭代创建,造成电脑死机的问题解决
- python升级后带来的几个小问题
- python __name__属性带来命名空间问题
- 升级python 带来的 yum 不能使用的问题
- notepad++上写python代码预防缩进带来的问题
- 关于Python迭代问题的解释
- Python编码带来的一些问题
- python 迭代问题
- Python--关于拷贝中的深拷贝和浅拷贝以及迭代索引的不伦不类带来的影响
- [python笔记]for循环中循环变量迭代问题
- Cent0S 升级Python会带来的问题
- python中迭代问题
- python 切片与迭代
- Python自动化之迭代器不能在迭代的时候更改值
- Python爬取中文页面的时候出现的乱码问题
- 关于wxpy,使用Python玩转微信的问题