Python 同时附加两个列表
我有一个绘制矩形的函数:Python 同时附加两个列表,python,list,Python,List,我有一个绘制矩形的函数: def drawTbl(l, w): ln1 = ' ' ln2 = '-' ln3 = '|' x = range(l) print '+', ln2*w, '+' for i in range(len(x)): print ln3, ln1*w, ln3 print '+', ln2*w, '+' 它工作得很好,但我正在尝试将其绘制成图形(这就像一个乒乓球克隆),这样我就可以在中心放置一个
def drawTbl(l, w):
ln1 = ' '
ln2 = '-'
ln3 = '|'
x = range(l)
print '+', ln2*w, '+'
for i in range(len(x)):
print ln3, ln1*w, ln3
print '+', ln2*w, '+'
它工作得很好,但我正在尝试将其绘制成图形(这就像一个乒乓球克隆),这样我就可以在中心放置一个球“O”,并使用X和Y进行碰撞检测。当我使用此功能时:
def tblData(l, w):
table=[]
for x in range(l):
table.append([])
for y in range(w):
table.append([])
它似乎附加了空白列表,但是当我尝试使用<代码>表[x] [y] < /代码>时,我所接收到的都是一个错误。
当我从tblData
返回table
时,确实会得到一个空列表,
但是如果说(l,w)
是(12,56)
,那么我试图将球'O'放在网格的中心(6,28)
,只需键入表[6][28]
返回一个错误,所以我不知道如何将'O'附加到表[6,28]
因此,我的问题是,如何有效地访问
列表[x][y]
?而不是创建空列表,您需要将内部列表中的值初始化为某个合理的值,如空格
例如:
def tblData(l, w):
table=[]
for x in range(l):
table.append([' '] * w)
return table
>>> import pprint
>>> table = [[' '] * 4 for x in range(5)]
>>> pprint.pprint(table)
[[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ']]
>>> table[3][1] = 'O'
>>> pprint.pprint(table)
[[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', 'O', ' ', ' '],
[' ', ' ', ' ', ' ']]
或者更简洁地说:
def tblData(l, w):
return [[' '] * w for x in range(l)]
请注意,[''']*3
创建了列表[''''',''']
,因此[''']*w
相当于[''用于范围(w)内的x]
例如:
def tblData(l, w):
table=[]
for x in range(l):
table.append([' '] * w)
return table
>>> import pprint
>>> table = [[' '] * 4 for x in range(5)]
>>> pprint.pprint(table)
[[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ']]
>>> table[3][1] = 'O'
>>> pprint.pprint(table)
[[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', 'O', ' ', ' '],
[' ', ' ', ' ', ' ']]
您需要将内部列表中的值初始化为某个合理的值,如空格,而不是创建空列表 例如:
def tblData(l, w):
table=[]
for x in range(l):
table.append([' '] * w)
return table
>>> import pprint
>>> table = [[' '] * 4 for x in range(5)]
>>> pprint.pprint(table)
[[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ']]
>>> table[3][1] = 'O'
>>> pprint.pprint(table)
[[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', 'O', ' ', ' '],
[' ', ' ', ' ', ' ']]
或者更简洁地说:
def tblData(l, w):
return [[' '] * w for x in range(l)]
请注意,[''']*3
创建了列表[''''',''']
,因此[''']*w
相当于[''用于范围(w)内的x]
例如:
def tblData(l, w):
table=[]
for x in range(l):
table.append([' '] * w)
return table
>>> import pprint
>>> table = [[' '] * 4 for x in range(5)]
>>> pprint.pprint(table)
[[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ']]
>>> table[3][1] = 'O'
>>> pprint.pprint(table)
[[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' '],
[' ', 'O', ' ', ' '],
[' ', ' ', ' ', ' ']]
F.J的答案很好,但你也有一个问题,你没有制作二维数组。您正在制作一个包含l+w空列表的列表。您是对的,调用pprint时这很有效,但我仍然没有操作它来放置对象(同时仍然使用我原来的矩形函数),如果您有任何建议也很酷的话,我将对2d数组进行一些阅读。F.J的答案很好,但是你也有一个问题,你没有制作一个二维数组。您正在创建一个包含l+w空列表的列表。您是对的,在调用pprint时,这很有效,但我仍然没有操作它来放置对象(同时仍然使用我原来的矩形函数)。如果您有任何建议,我也会阅读2d数组。