map
andfilter
通常可以与列表推导互换,但reduce
不像map
and那样容易交换filter
(此外,在某些情况下,我仍然更喜欢函数式语法)。但是,当您需要对参数本身进行操作时,我发现自己正在经历句法体操,最终不得不编写整个函数以保持可读性。
我将map
用来保持插图单元测试的简单性,但请记住,现实生活中的用例可能更难表达为列表理解。
我找到了两种混乱的方法来解决它,但我实际上不会使用任何方法。
[afunc(*i) for i in aniter] == map(afunc, *zip(*aniter))
[afunc(*i) for i in aniter] == map(lambda i: apply(afunc, i), aniter)
有没有什么简洁、优雅的方式来表达这些表达式的右手边?