参加以下课程:
class Foo:
def __init__(self,boolean):
bar = boolean
让foos
成为Foo
我想在列表理解中执行以下操作:
hold = []
for foo in foos:
foo.added = "I was added in iteration"
if foo.bar:
hold.append(some_function(foo.bar))
else:
hold.append(some_other_function(foo.bar))
注意:这实际上并不是它的外观,我只需要制作一个if和else
所以没有foo.added
行,这是我的解决方案:
[some_function(foo.bar) if foo.bar else some_other_function(foo.bar) for foo in foos]
如何在列表推导中添加属性?
我正在运行的代码将被频繁访问,以至于处理第二个处理的每个片段都在这里。列表理解避免了append
行,并且考虑到调用的数量,这可能非常有用
答案 0 :(得分:3)
仅出于学习目的,永远不要在实际代码中使用它。 正常循环是一个更好的选择:
[some_function() if foo.bar else some_other_function()
for foo in foos if not setattr(foo, 'added', "I was added in iteration")]