Python 2d列表或数组:如何修改一个值-即每个单元格的唯一指针?
如何创建每个单元格只有一个指针的列表?(我认为这就是问题所在) 谢谢 ps如果你感觉很好,我如何从打印功能中去掉空格Python 2d列表或数组:如何修改一个值-即每个单元格的唯一指针?,python,Python,如何创建每个单元格只有一个指针的列表?(我认为这就是问题所在) 谢谢 ps如果你感觉很好,我如何从打印功能中去掉空格 class Board(object): """board of pieces""" def __init__(self): self.board = [['0']*7]*6 #6x7 grid self.board[3][6] = 8 def printBoard(self): """Display t
class Board(object):
"""board of pieces"""
def __init__(self):
self.board = [['0']*7]*6 #6x7 grid
self.board[3][6] = 8
def printBoard(self):
"""Display the board array"""
print self.board
for i in range(6):
for j in range(7):
print self.board[i][j],
print "\n",
0 0 0 0 0 0 8
0 0 0 0 0 0 8
0 0 0 0 0 0 8
0 0 0 0 0 0 8
0 0 0 0 0 0 8
0 0 0 0 0 0 8
您需要重写self.board,如下所示
self.board = [['0']*7 for i in range(6)]
阅读Python常见问题解答中的列表
以下是常见问题解答中答案的摘录
原因是使用*复制列表不会创建副本,而是
仅创建对现有对象的引用。*3创建一个列表
包含对长度为2的相同列表的3个引用。更改为1
行将显示在所有行中,这几乎肯定不是您所希望的
需要
也许这是重复的,这是我在那里找到的最好的答案:(我改编了这个例子) 您可以使用列表理解
[x[:] for x in [['0']*7]*6]
[['0']*7]*6创建重复6次的同一对象的列表。你
不能只使用它,因为修改一个元素会修改它
每行中都有相同的元素
x[:]相当于列表(x),但由于它
避免名称查找。无论哪种方式,它都会创建每个对象的浅拷贝
行,所以现在所有元素都是独立的
对于多维数组,我更喜欢使用元组索引的字典:
class Board(object):
"""board of pieces"""
WIDTH = 7
HEIGHT = 6
def __init__(self):
self.board = {}
for i in range(self.HEIGHT):
for j in range(self.WIDTH):
self.board[i,j] = 0
self.board[3,6] = 8
def printBoard(self):
"""Display the board array"""
print self.board
for i in range(6):
for j in range(7):
print self.board[i,j],
print "\n",
“指针”是什么意思?你说的是“C”指针吗?这会在每行留下尾随的8个指针;不确定这是否是个问题
class Board(object):
"""board of pieces"""
WIDTH = 7
HEIGHT = 6
def __init__(self):
self.board = {}
for i in range(self.HEIGHT):
for j in range(self.WIDTH):
self.board[i,j] = 0
self.board[3,6] = 8
def printBoard(self):
"""Display the board array"""
print self.board
for i in range(6):
for j in range(7):
print self.board[i,j],
print "\n",