问题:如何为此循环定义紧凑结构:
for V in L:
V.f()
其中:
L
:是给定类型A
f()
:A
。例如:
class A:
def f(self):
print "foobar... "
# Construct the list
a1 = A()
a2 = A()
a3 = A()
L = [a1, a2, a3]
for V in L:
V.f()
我找到了一种使用map调用和lambda函数的方法:
map(lambda x: x.f(), L)
但是,此调用返回一个列表,我不希望构建它。
有更优雅的方式吗?
答案 0 :(得分:1)
执行此操作的正确方法是使用您提到的循环。任何其他解决方案在语义上都是不正确的。
(你所说的是“对于L中的每个项目,做f。”也就是说,你是必须的。一个for循环就是这么说的。)
答案 1 :(得分:0)
如果您不希望列表作为返回值,那么for循环是最好的方法。
for V in L:
V.f()
或者,您可以使用python的最佳功能之一,列表推导,而不是将其分配给任何变量。列表推导通常更快。
[ V.f() for V in L]