同时添加两个列表

2024-09-30 14:29:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个绘制矩形的函数:

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([])

它似乎附加了空白列表,但是当我尝试使用^ {CD1>}时,我所接收的都是一个错误。你知道吗

当我从tblData返回table时,我得到一个空列表的列表, 但是假设(l, w)(12, 56),所以我试图把球'O'放在网格的中心(6, 28),只需键入table[6][28]就会返回一个错误,所以我不知道如何将'O'附加到table[6,28]

所以我的问题是,如何有效地访问list[x][y]?你知道吗


Tags: 函数in列表fordeftable绘制range
1条回答
网友
1楼 · 发布于 2024-09-30 14:29:06

与创建空列表不同,您需要将内部列表中的值初始化为一些合理的值,如空格。你知道吗

例如:

def tblData(l, w):
    table=[]
    for x in range(l):
        table.append([' '] * w)
    return table

或者更简洁地说:

def tblData(l, w):
    return [[' '] * w for x in range(l)]

注意,[' '] * 3创建列表[' ', ' ', ' '],因此[' '] * w等价于
[' ' for x in range(w)]。你知道吗

例如:

>>> import pprint
>>> table = [[' '] * 4 for x in range(5)]
>>> pprint.pprint(table)
[[' ', ' ', ' ', ' '],
 [' ', ' ', ' ', ' '],
 [' ', ' ', ' ', ' '],
 [' ', ' ', ' ', ' '],
 [' ', ' ', ' ', ' ']]
>>> table[3][1] = 'O'
>>> pprint.pprint(table)
[[' ', ' ', ' ', ' '],
 [' ', ' ', ' ', ' '],
 [' ', ' ', ' ', ' '],
 [' ', 'O', ' ', ' '],
 [' ', ' ', ' ', ' ']]

相关问题 更多 >