当前位置: 首页 > 面试题库 >

Python-生成器表达式与列表理解

萧远
2023-03-14
问题内容

什么时候应该使用生成器表达式,什么时候应该在Python中使用列表推导?

# Generator expression
(x*2 for x in range(256))

# List comprehension
[x*2 for x in range(256)]

问题答案:

John的答案很好(当你要迭代多次时,列表理解会更好)。但是,还应注意,如果要使用任何列表方法,都应使用列表。例如,以下代码将不起作用:

def gen():
    return (something for something in get_some_stuff())

print gen()[:2]     # generators don't support indexing or slicing
print [5,6] + gen() # generators can't be added to lists

基本上,如果你要做的只是迭代一次,则使用生成器表达式。如果你要存储和使用生成的结果,那么列表理解可能会更好。

由于性能是选择彼此的最常见原因,所以我的建议是不要担心它,而只选择其中一个即可。如果你发现程序运行速度太慢,则只有这样,你才应该回去担心调整代码。



 类似资料:
  • 本文向大家介绍python生成器表达式和列表解析,包括了python生成器表达式和列表解析的使用技巧和注意事项,需要的朋友参考一下 绝大多数情况下,遍历一个集合都是为了对元素应用某个动作或是进行筛选。如果看过本文的第二部分,你应该还记得有内建函数map和filter提供了这些功能,但Python仍然为这些操作提供了语言级的支持。 如你所见,生成器表达式和列表解析(注:这里的翻译有很多种,比如列表展

  • 问题内容: 在Python中,通过 生成器表达式 创建生成器对象与使用 yield 语句之间有什么区别吗? 使用 yield : 使用 生成器表达式 : 这两个函数都返回生成器对象,这些对象生成元组,例如(0,0),(0,1)等。 一个或另一个有什么优势吗?有什么想法吗? 谢谢大家!这些答案中有很多不错的信息和进一步的参考! 问题答案: 两者之间只有细微的差别。您可以使用该模块自己检查这种事情。

  • 本文向大家介绍python列表生成式与列表生成器的使用,包括了python列表生成式与列表生成器的使用的使用技巧和注意事项,需要的朋友参考一下 列表生成式:会将所有的结果全部计算出来,把结果存放到内存中,如果列表中数据比较多,就会占用过多的内存空间,可能会导致MemoryError内存错误或者导致程序在运行时出现卡顿的情况 列表生成器:会创建一个列表生成器对象,不会一次性的把所有结果都计算出来,如

  • 本文向大家介绍python 中的列表生成式、生成器表达式、模块导入,包括了python 中的列表生成式、生成器表达式、模块导入的使用技巧和注意事项,需要的朋友参考一下 5.16 列表生成式 5.17 列表生成式与生成器表达式的应用 第六章模块 什么是模块? 模块就是一系统功能的集合体,在python中,一个py文件就是一个模块,比如module.py,其中模块名module 6.1 import

  • 问题内容: 我正在回答这个问题,在这里我更喜欢生成器表达式并使用了它,我认为这样做会更快,因为生成器不需要先创建整个列表: Levon在解决方案中使用了列表理解功能, 但是当我做这些LC的时间结果比生成器快时: 然后我增加了列表的大小,并再次计时: 这次搜索生成器的时间比LC快,但是当我搜索中间元素(11)和最后一个元素时,LC再次击败了生成器表达式,我不明白为什么? 问题答案: 扩展Paulo的

  • 本文向大家介绍详解python列表生成式和列表生成式器区别,包括了详解python列表生成式和列表生成式器区别的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python(列表生成式/器)的具体代码,供大家参考,具体内容如下 一、列表生成式 二、小例子 三、字典生成式 四、列表生成器和列表生成式的区别 列表生成式: 会将所有的结果全部计算出来,把结果存放到内存中,如果列表中数据比较多