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数组。