![]() |
1
14
你是对的:列表理解本质上只是映射和过滤的语法糖(来自函数式编程世界的术语)。 希望这个示例代码能够证明它们的相等性:
注意,这只在python 2.x中有效,正如silentghost在注释中指出的那样。要使其与python 3兼容,您必须在
|
![]() |
2
3
是的,基本上是一样的。 实际上,python还有一个map函数:
与上面的第一个示例相同。但是,在Python中,列表理解语法是首选的。我相信guido被引用说他对引入函数语法感到遗憾。 然而,真正有趣的是列表理解的下一个进化,它是生成器。它们允许您返回一个迭代器——而不是一次处理整个列表,而是执行一次迭代,然后返回,这样您就不必同时将整个列表保存在内存中。非常强大。 |
![]() |
3
2
它们是用于映射和过滤序列的“pythonic”版本,但它们允许执行其他一些操作,例如扁平(固定级别)嵌套列表:
还有一件事你不能用普通的 地图 lambda表达式在结构上分解迭代值,例如:
当然,还有一些解决方法,比如:
但是,如果已经定义了需要应用的转换,那么使用映射通常会更简单,如:
而不是
|
![]() |
4
2
清单的理解也会使事情变得扁平化: 例如: [(x,y)对于x in xrange(10),如果x%2==0,对于y in xrange(20),如果x!= y] 如果在这里使用嵌套映射,那么也必须使用concat(求和列表)。 |
![]() |
5
0
列表理解比映射或过滤更强大,因为它们允许您抽象地使用列表。 当您的映射被更多的映射和过滤器调用进一步嵌套时,使用它们也更加方便。 |
![]() |
6
0
对。python语法的强大之处在于,相同的语法(在圆括号内而不是方括号内)也用于定义生成器,后者根据需要生成值序列。 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
BioRod · 我不能用Perl打印键和值 2 年前 |
![]() |
user17227456 · Perl CLI代码无法追加字符串行 2 年前 |
![]() |
LearnToBeBetter · 读取文件,搜索字符串,打印字符串 2 年前 |
![]() |
KJ7LNW · 一些波斯语文本的宽字符印刷,但其他文本则没有 2 年前 |
![]() |
con · 如何搜索大型数据结构并返回一系列给出特定值的键/数组? 3 年前 |
![]() |
Pranay Nanda · 使用regex解析许可证文件 6 年前 |