Python 为iterable中的每个项调用函数
我想知道是否有一种更“简洁”或更像蟒蛇的方式来做到这一点Python 为iterable中的每个项调用函数,python,loops,iterator,Python,Loops,Iterator,我想知道是否有一种更“简洁”或更像蟒蛇的方式来做到这一点 foo = range(10) def bar (num): if num > 5: print "Num >5" map(bar, food) 这是我正在做的一个粗略的表示,除了foo是一个对象id列表,而bar实际上是bar.delay,因为这是一个芹菜任务 现在这是可行的,但它的副作用是生成一个结果列表(全部None)。除了for循环,还有其他方法吗?循环有什么问题吗 for item in f
foo = range(10)
def bar (num):
if num > 5:
print "Num >5"
map(bar, food)
这是我正在做的一个粗略的表示,除了foo
是一个对象id列表,而bar
实际上是bar.delay
,因为这是一个芹菜任务
现在这是可行的,但它的副作用是生成一个结果列表(全部
None
)。除了for循环,还有其他方法吗?循环有什么问题吗
for item in foo:
bar(item)
当然,如果你想变得有趣,你可以制作一个生成器
gen=(foo中item的bar(item)
或使用itertools.imap
,然后使用itertools的配方…for loop是最具python风格的方法,但是如果你真的厌倦了这种方法,请参阅我在这里提出的问题中的xmap函数:因为我不喜欢让这两行代码分散在我的代码中。当我习惯了生成器和列表理解之类的东西时,感觉很糟糕。但是,考虑到Shashank的性能结果,我将使用for循环。理解和map
-类函数都旨在构建一些对象(列表或生成器等)。如果您只想迭代对象并执行某些操作,而不构建任何内容,那么for循环始终是最干净的解决方案。