【问题标题】:Defining multiple objects of the same class in python在python中定义同一个类的多个对象
【发布时间】:2011-08-02 13:26:22
【问题描述】:

有没有在一行中定义同一类的多个对象的简写方法。 (我不是在谈论列表或对象数组)..

我的意思是像

p1,p2,p3 = Point()

有什么建议吗?

【问题讨论】:

  • 这意味着什么?你能解释一下你认为应该怎么做吗?

标签: python object


【解决方案1】:

使用生成器推导可能比使用列表推导更有效:

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()

这利用了隐式元组打包和解包。

【讨论】:

  • 是的,这正是我想要的..thnx
【解决方案2】:

不是真的。

p1, p2, p3 = [Point() for x in range(3)]

【讨论】:

    【解决方案3】:

    你到底想达到什么目的?

    此代码可以满足您的要求,但我不知道这是否是您的最终目标:

    p1, p2, p3 = [Point() for _ in range(3)]
    

    【讨论】:

      【解决方案4】:

      思维导图在这里也可以接受:

      p1, p2, p3 = map(lambda x: Point(), xrange(3))
      

      但是生成器表达式似乎要快一点:

      p1, p2, p3 = (Point() for x in xrange(3))
      

      【讨论】:

      • 这是一个生成器推导,而不是列表推导。
      • @JAB: 那是generator expression,不是生成器理解
      • @TokenMacGuy:考虑到文档中其他地方的语法用法,“生成器理解”可以简单地理解为“理解包装为生成器”而不是“作为列表”或“作为字典” .毕竟,大多数人所说的“列表理解”实际上是“列表显示中包含的(列表)理解”,如您提供的链接所示。
      • 谢谢你们 - 我已经修改了我的帖子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 2022-11-15
      • 1970-01-01
      • 2022-10-19
      • 2022-12-10
      相关资源
      最近更新 更多