2012-04-15 104 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