我对这些微不足道的技术细节感到好奇 - 这两者在python的内部表现,性能和类似的东西之间存在差异。
答案 0 :(得分:1)
一般情况下,不建议使用map和filter,但只使用一个函数进行映射过滤,它们很有用。但是从不使用map或过滤lambda考虑这个:
过滤器或地图更好的地方:
(i for i in iterable if i), filter(bool, i)
(int(i) for i in iterable), map(int, i)
看,它们更简单。但是,请考虑一下:
(i+3 for i in iterable), map(lambda i: i+3, iterable)
(i for i in iterable if i.isdigit()), filter(lambda i, i.isdigit(), iterable)
生成器表达式的一个优点是,您可以混合使用地图和过滤器功能。
(f(i) for i in iterable if g(i)), map(f, filter(g, iterable))
对我来说,规则是:
修改强>
忘了一件重要的事情:
在3岁以上的Python版本中,map(和filter)非常渴望,所以最好将它与列表推导进行比较。但是在Python 3上,map是懒惰的,它就像生成器表达式一样。