我有一些簡單的代碼,代表使用方形布爾矩陣的圖形,其中行/列是節點,true表示兩個節點之間的無向鏈接。我正在用False值初始化此矩陣,然後在存在鏈接的情況下將該值設置爲True。Python列表初始化(通過ref問題)
我相信我初始化列表的方式導致一個單一的bool實例被給定行中的每個單元格引用。結果是,如果我將任何單元格設置爲True,則該行中的所有其他單元格也會變爲True。
我應該如何初始化我的方形矩陣,使所有的值都是假的,但沒有一個與其他單元格的引用共享?
import sys
class Graph(object):
def __init__(self, nodeCount, links):
self.matrix = [[False] * nodeCount] * nodeCount
for l in links:
self.matrix[l[0]][l[1]] = True
def __str__(self):
s = " "
for i in range(len(self.matrix)):
s += str(i) + " "
s += "\n"
for r in range(len(self.matrix)):
s += str(r) + " "
for c in range(len(self.matrix)):
s += str(self.matrix[c][r])[0] + " "
s += "\n"
return s
g = Graph(5, [(2,3)])
print g
此外,在GIST
你是對的,感謝您的詳細解釋 – 2010-07-10 06:47:07