filter 和 map 合起来能做的事情,列表推导也可以做,而且还不需要借助难以理解和阅读的 lambda 表达式。文章来源:https://www.toymoban.com/news/detail-802299.html
>>> symbols = '$¢£¥€¤'
>>> beyond_ascii = [ord(s) for s in symbols if ord(s) > 127]
>>> beyond_ascii
[162, 163, 165, 8364, 164]
>>> beyond_ascii = list(filter(lambda c: c > 127, map(ord, symbols)))
>>> beyond_ascii
[162, 163, 165, 8364, 164]
我原以为 map/filter 组合起来用要比列表推导快一些,Alex Martelli 却说不一定——至少在上面这个例子中不一定。在本书的代码仓库(https://github.com/fluentpython/examplecode)中有名为 02-array-seq/listcomp_speed.py(https://github.com/fluentpython/example-code/blob/master/02-array-seq/listcomp_speed.py)的脚本,代码中有这两个方法的效率的比较。文章来源地址https://www.toymoban.com/news/detail-802299.html
到了这里,关于python 列表推导同filter和map的比较的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!