2012-04-15 68 views
0

我试图把这个线在我的代码,试图创建一个80 * 80格:的Python:列出的参考

a = [[0] * 80] * 80 

然而,事实证明,我有80个参照相同的列表,并我花了很长时间才意识到这个问题。

我想知道是否有一种方法来理解/记忆如何在常用方法中引用python?

谢谢!

+4

它在[Python常见问题](http://docs.python.org/faq/programming.html#how-do-i-create-a-multidimensional-list) – yazu 2012-04-15 06:24:26

回答

1

是的,如果你这样做,你将有N个参考的同一个列表。

如果你想有不同的列表,你可以独立操作,你可以做到以下几点:

a = [[0 for x in xrange(80)] for y in xrange(80)] 

请注意,我使用的xrange而不是范围:这是一台发电机,并不会分配内存范围。

+0

是否有任何其他场景我可能会不知不觉中遇到列表引用? – stupidguy 2012-04-15 06:23:36

+0

这是我看到人们犯错误的主要原因之一,与其他语言相比,您通常不必担心Python中的引用过多。 – 2012-04-15 06:27:26

+0

是的。你为什么不使用numpy这些?对于矩阵操作非常有用。 – Mellkor 2012-04-15 06:28:57