【发布时间】:2016-07-14 21:34:49
【问题描述】:
在底层,迭代不只是列表吗?拥有像 map filter list 和其他类似的包装器有什么用? filter 实际上告诉你什么,除了它的起源? x 什么时候(除了在例如列表理解中更短)比 list(x) 更好,其中 x 是可迭代的?
我听说的一件事是,将 map 和 filter 保留为可迭代对象比将它们用作列表要快。为什么是这样?引擎盖下有什么不同可以让迭代更快?
【问题讨论】:
在底层,迭代不只是列表吗?拥有像 map filter list 和其他类似的包装器有什么用? filter 实际上告诉你什么,除了它的起源? x 什么时候(除了在例如列表理解中更短)比 list(x) 更好,其中 x 是可迭代的?
我听说的一件事是,将 map 和 filter 保留为可迭代对象比将它们用作列表要快。为什么是这样?引擎盖下有什么不同可以让迭代更快?
【问题讨论】:
iterable 和 list 的区别就像一朵花和一朵玫瑰的区别。
所有的玫瑰都是花,但不是所有的花都是玫瑰。
所有列表都是可迭代的,但并非所有可迭代的都是列表。
可迭代
一个能够一次返回其成员的对象。可迭代对象包括所有序列类型(如列表、字符串和元组)。
List 是一个可迭代的,并且有一些其他更具体的特征要列出。
检查一下:https://docs.python.org/3.5/glossary.html 特别是在可迭代部分。
【讨论】: