Python中实现类似forEach功能的Pythonic优雅方案是什么?
在Python中实现类似forEach的原生优雅写法
首先明确:Python的设计哲学更偏向显式代码,所以最符合Python风格的“遍历执行”方式,就是直接写显式的for循环:
for item in collection: function(item)
你提到的几种替代写法都有各自的问题:
[function(item) for item in collection]:会生成一个包含所有函数返回值的列表,完全没必要,还会占用额外内存,处理大集合时问题更明显。any(function(item) for item in collection):依赖function的返回值,如果某次调用返回True,any会直接终止遍历,无法保证所有元素都被处理。map(function, collection):Python的map是惰性迭代器,必须主动迭代(比如转成列表list(map(...)))才会执行函数,但同样会生成无用的返回值列表,浪费资源。
如果你实在想封装成类似forEach的函数,原生Python里可以写一个极简版本,但其实必要性很低——毕竟显式循环已经足够清晰:
def for_each(func, iterable): for item in iterable: func(item)
本质上,Python没有内置forEach方法,是因为社区普遍认为显式循环的可读性更高,符合“可读性胜于简洁性”的核心原则。与其追求类似其他语言的写法,不如遵循Python的习惯,直接用显式循环来处理这类场景。
内容的提问来源于stack exchange,提问作者Tubbs
相关产品推荐
相关产品推荐

