2013-05-22 91 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 

既然你不得不更换项而不是修改它们