创建一个';网格';Python中类的Instances的

创建一个';网格';Python中类的Instances的,python,list,grid,Python,List,Grid,我一直在使用这个网站寻找各种编程问题的答案,首先我要感谢你们在我的编程之旅中给予我的帮助。不管怎样,请回答我的问题: 我想创建一个类实例列表。哇,真是太好了。让我试着用代码更好地解释。例如,以下3x3“网格”: foo = [bar(), bar(), bar()], bar(), bar(), bar()], bar(), bar(), bar()]] 但是,我事先不知道“网格”的尺寸。在我看来,最合乎逻辑的尝试是: foo = [[bar()]*num]*num

我一直在使用这个网站寻找各种编程问题的答案,首先我要感谢你们在我的编程之旅中给予我的帮助。不管怎样,请回答我的问题:

我想创建一个类实例列表。哇,真是太好了。让我试着用代码更好地解释。例如,以下3x3“网格”:

foo = [bar(), bar(), bar()],
       bar(), bar(), bar()],
       bar(), bar(), bar()]]
但是,我事先不知道“网格”的尺寸。在我看来,最合乎逻辑的尝试是:

foo = [[bar()]*num]*num
但是,这并不能正常工作。我认为错误在于Python填充的“网格”中充满了相同的bar()实例,这是有问题的。有没有什么“好”的方法可以让我用bar()的不同实例填充网格


序列乘法对同一个对象生成一个大的引用网格。您需要使用列表理解来反复计算
bar()
表达式。

在现代Python中,
range
xrange
具有相同的行为,因此通常您应该更喜欢
range
,因为使用
xrange
只会增加代码中的噪音。@Rafecattler:这只适用于Python 3,其中甚至不存在
xrange
。当前,当版本未指定时,默认假设为Python 2。
foo = [[bar() for _ in xrange(num)] for _ in xrange(num)]