发布
社区首页 >问答首页 >地图对象和生成器对象之间的区别是什么?

地图对象和生成器对象之间的区别是什么?
EN

Stack Overflow用户
提问于 2020-04-14 07:22:09
回答 1查看 382关注 0票数 0

在哪种情况下,哪种方法最适合使用?我指的是用map()、生成器表达式和生成器函数生成的对象。

下面是我用来查看这些对象的代码。

代码语言:javascript
代码运行次数:0
复制
str_ints = (str(x)for x in range(3))
f = len
map_obj = map(f, str_ints)
gen_obj_from_gen_expression = (f(e) for e in str_ints)

def gen_f():
  for e in str_ints:
    yield f(e)

gen_obj_from_function = gen_f()
for obj in (map_obj, gen_obj_from_gen_expression, gen_obj_from_function):
  print(f'object: {obj}\ntype: {type(obj)}\n')

输出:

代码语言:javascript
代码运行次数:0
复制
object: <map object at 0x7f425c0f3f98>
type: <class 'map'>

object: <generator object <genexpr> at 0x7f425c1573b8>
type: <class 'generator'>

object: <generator object gen_f at 0x7f425c157570>
type: <class 'generator'>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-14 07:41:59

这些对象之间几乎没有区别。他们认为它们是不同的对象,来自map函数接受多个迭代量的能力。

在这种情况下,它将遍历所有这些元素,并在每次迭代中使用每个元素调用函数。当最短的迭代器完成时,它就会停止,这是常规生成器所不能做到的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61198355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档