所以我有一个包含一些类实例的列表.
随着时间的推移,我希望在每一步都能调用run类的方法.
到目前为止,我有以下内容.但是有没有更好或更多的Pythonic方法来实现for c in objs:阻止?
谢谢!
#!/usr/bin/python
class the_class:
def __init__(self):
self.num=1
def run(self):
self.num+=1
def main():
objs=[]
objs.append(the_class())
objs.append(the_class())
objs.append(the_class())
for t in range(10):
for c in objs:
c.run()
print objs[0].num
main()
Run Code Online (Sandbox Code Playgroud)
Rus*_*ove 10
不,你拥有的是完全合理的和Pythonic.
列表理解语法:
[c.run() for c in objs]
Run Code Online (Sandbox Code Playgroud)
为您节省一行,但使用列表推导副作用通常被认为是不好的风格.
不,你有什么是完美的.
在此处使用列表推导或映射会使您的代码不那么清晰,难以阅读.我强烈建议不要这样做.
列表理解旨在创建列表.如果要进行循环,请使用循环.
即使您确实需要对此进行优化(并且使用列表补偿或映射也不太可能是有效的优化),然后在证明它是瓶颈时执行此操作.可读性是第一位的,只在您需要的地方进行优化.