1

我一直在使用这个网站来寻找各种编程问题的答案,首先我要感谢大家在我的编程过程中提供的大量帮助。无论如何,关于我的问题:

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

foo = [bar(), bar(), bar()],
       bar(), bar(), bar()],
       bar(), bar(), bar()]]

效果很好,但是,我事先不知道“网格”的尺寸。在我看来,最合乎逻辑的尝试是执行以下操作:

foo = [[bar()]*num]*num

但是,这不能正常工作。我认为错误在于 Python 正在填充充满 bar() 的相同实例的“网格”,这是有问题的。有什么方法可以让我完成用不同的 bar() 实例填充网格的任务吗?

4

1 回答 1

3
foo = [[bar() for _ in xrange(num)] for _ in xrange(num)]

序列乘法对同一个对象产生了一个大的引用网格。您需要使用列表推导来bar()重复评估表达式。

于 2013-08-09T22:31:06.880 回答