是否有一种 Pythonic 方式来创建克隆项目列表? [复制]

Posted

技术标签:

【中文标题】是否有一种 Pythonic 方式来创建克隆项目列表? [复制]【英文标题】:Is there a Pythonic way to create a list of cloned items? [duplicate] 【发布时间】:2019-01-10 19:15:20 【问题描述】:

考虑以下代码:

class SomeClass:
    def __init__(self):
        self.foo = None

some_list = [SomeClass()] * 5

这段代码的问题是some_list 的所有5 项都引用SomeClass 的同一个实例。如果我做some_list[0].foo = 7,那么我得到some_list[1].foo 等于7,等等。

那么如何在一个列表中实例化N 不同的SomeClass 实例呢?

【问题讨论】:

你的标题与你想要的相反 @roganjosh,现在好些了吗? 您正在尝试创建一个类实例列表。至少对我来说,“克隆”意味着对内存中同一对象的引用 【参考方案1】:

解决方案:使用列表推导

class SomeClass:
    def __init__(self):
        self.foo = None

some_list = [SomeClass() for _ in range(5)]

【讨论】:

以上是关于是否有一种 Pythonic 方式来创建克隆项目列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

是否有一种优雅的 Pythonic 方式来计算已处理的数据? [复制]

是否有一种 Pythonic 的方式来跳过 for 循环中的 if 语句以使我的代码运行得更快?

Python:连接(或克隆)一个numpy数组N次

什么是更快,更Pythonic的方式来读取CSV并从中创建数据框?

是否有一种无头的方式来导入项目和刷新工作区?

pythonic方式在没有索引变量的情况下做N次?