编辑列表python3

时间:2011-08-07 02:35:42

标签: python python-3.x nested-lists

我有以下代码

class Board:
    def __init__(self, size=7):
        self._size = size
        self._list, self._llist =[],[]
        for i in range (self._size):
            self._list.append('_ ')
        for j in range(self._size):
            self._llist.append(self._list)
    def printboard(self):
        for i in range(self._size):
            for j in range(self._size):
                print(self._llist[i][j], end = ' ')
            print('\n')

    def updateboard(self,x,y,letter):
        self._llist[x][y]=letter
        self.printboard()

board = Board(3)
board.updateboard(0,0,'c')

并打印

c _  _ 

c _  _  

c _  _

而不是

c _  _ 

_ _  _  

_ _  _

我看不出有什么问题。另外,有没有更简单的方法来动态创建列表?

谢谢!

1 个答案:

答案 0 :(得分:1)

您正在使用相同的llist对象创建list,重复多​​次。如果您希望llist中的每个列表都是一个独立的独立对象(这样,当您修改内容时,只更改了一个列表),那么您需要为每个列表附加一个不同的副本。最简单的方法是改变:

self._llist.append(self._list)

self._llist.append(list(self._list))

更简单的代码是:

self._list = ['_ '] * self._size
self._llist = [list(self._list) for i in range(self._size)]