是否有一种 Pythonic 方式来创建克隆项目列表?
Is there a Pythonic way to create a list of cloned items?
考虑以下代码:
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
个实例?
解决方案:使用列表理解
class SomeClass:
def __init__(self):
self.foo = None
some_list = [SomeClass() for _ in range(5)]
考虑以下代码:
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
个实例?
解决方案:使用列表理解
class SomeClass:
def __init__(self):
self.foo = None
some_list = [SomeClass() for _ in range(5)]