【发布时间】:2011-08-02 13:26:22
【问题描述】:
有没有在一行中定义同一类的多个对象的简写方法。 (我不是在谈论列表或对象数组)..
我的意思是像
p1,p2,p3 = Point()
有什么建议吗?
【问题讨论】:
-
这意味着什么?你能解释一下你认为应该怎么做吗?
有没有在一行中定义同一类的多个对象的简写方法。 (我不是在谈论列表或对象数组)..
我的意思是像
p1,p2,p3 = Point()
有什么建议吗?
【问题讨论】:
使用生成器推导可能比使用列表推导更有效:
p1, p2, p3 = (Point() for _ in range(3)) # use xrange() in versions of Python where range() does not return an iterator for more efficiency
还有简单的解决办法
p1, p2, p3 = Point(), Point(), Point()
这利用了隐式元组打包和解包。
【讨论】:
不是真的。
p1, p2, p3 = [Point() for x in range(3)]
【讨论】:
你到底想达到什么目的?
此代码可以满足您的要求,但我不知道这是否是您的最终目标:
p1, p2, p3 = [Point() for _ in range(3)]
【讨论】:
思维导图在这里也可以接受:
p1, p2, p3 = map(lambda x: Point(), xrange(3))
但是生成器表达式似乎要快一点:
p1, p2, p3 = (Point() for x in xrange(3))
【讨论】: