列表推导式:简洁高效更具 Python 风格的列表创建方法

我们在《Python 中的列表和元组》中已经详细介绍了列表(list)的基本特性和使用方法,本文将着重介绍一种 Python 中用于创建 list 的简洁高效的语法形式:列表推导式。Python 之所以广受欢迎,有一个重要的原因是 Python 代码风格优雅,容易编写,并且几乎和普通英语一样易读(这当然是针对大多数母语为英语的开发者)。列表推导式就是 Python 中体现这一因素的语言特性。 列表

详情

生成器表达式与列表理解

问题: 在Python中什么时候应该使用生成器表达式,什么时候应该使用列表理解?在 # Generator expression(x*2 for x in range(256))# List comprehension[x*2 for x in range(256)] 答案: 在John’s answer是很好的(当你想对某个东西进行多次迭代时,列表理解会更好)。但是,值得注意的是,如

详情

创建重复N次的单个项目列表

问题: 我想创建一系列的列表,所有的长度都不一样。每个列表将包含相同的元素e,重复n次(其中n=列表的长度) 如何创建列表,而不对每个列表使用列表理解[e代表xrange(n)中的number]?在 答案: 你也可以写下: [e] * n 你应该注意,如果e是一个空列表,你得到的列表中有n个引用到同一个列表,而不是n个独立的空列表。在 性能测试 乍一看,repeat似乎是创建包含n个相同元素的列表

详情

列表理解与地图

问题: 有没有理由更喜欢使用map()而不是列表理解,或者反之亦然?它们中的一种通常比另一种更有效,还是被认为更具Python味?在 答案: 在某些情况下,map在显微镜下可能会更快(当您不是为此目的而生成lambda,而是在map和listcomp中使用相同的函数时)。在其他情况下,列表理解可能更快,而且大多数(并非所有)Python学家都认为它们更直接、更清晰 使用完全相同的功能时,map的微

详情

列表理解中的if/else

问题: 如何用Python执行以下操作?在 row = [unicode(x.strip()) for x in row if x is not None else ”] 基本上: 答案: 你完全可以做到。只是订购问题: [unicode(x.strip()) if x is not None else ” for x in row] 总的来说 [f(x) if condition else

详情

创建具有列表理解功能的词典

问题: 我喜欢Python列表理解语法 它也可以用来创建词典吗?例如,通过迭代键和值对: mydict = {(k,v) for (k,v) in blah blah blah} # doesn’t work 答案: 从Python2.7和3以后,应该只使用dict comprehension syntax公司名称: {key: value for (key, value) in iterable

详情