2013-05-22 25 views
0

我正在嘗試爲一個學校項目進行一次字詞搜索,並且遇到了麻煩。我正在使用一個具有板子功能的類。這裏是我的代碼:打印出預期的( ''=無)在列表中鏈接字符串的Python

A 
'' 

它打印出

A 
A 

我在做什麼錯的

class Board: 
    def __init__(self,size=20): 
     self.board = [['']*size]*size 
     self.board[0][0] = 'A' 
     self.words = ['lorem', 'ipsum', 'dolor', 'sit', 'amet',\ 
         'consectetur', 'adipiscing', 'elit', 'quisque',\ 
         'in', 'augue', 'sit', 'amet', 'est', 'ullamcorper',\ 
         'bibendum', 'sed', 'at', 'arcu', 'nullam'] 
     self.clues = self.words 

board = Board() 
print ''.join(board.board[0]) 
print ''.join(board.board[1]) 

呢?

+1

這是一個重複,但我永遠記得這個問題標題 – jamylak

+0

「還要注意的是,副本很淺;嵌套結構不會被複制。這經常困擾着新的Python程序員「http://docs.python.org/3.3/library/stdtypes.html#common-sequence-operations – Ryan

回答

3

這將創建引用的列表相同的列表

self.board = [['']*size]*size 

你需要做一個新的列表,這樣

self.board = [['']*size for x in range(size)] 

這是唯一安全的繁衍不可變對象在每個條目像這樣的列表。例如

['']*size 
[0]*size 

既然你不得不更換項而不是修改它們