Python多维列表 - IndexError:列表索引超出范围

时间:2014-12-19 04:23:08

标签: python list

我确信这很简单,我已经阅读了关于同一主题的十几篇帖子,但我仍然不明白为什么这不起作用......

banner = [[0 for i in xrange(60)] for i2 in xrange(60)]

def load_banner():
    file = open('banner', 'r')
    x = 0
    y = 0
    for line in file:
        for c in line:
            banner[x][y] = c
            y += 1
        x += 1
    pprint.pprint(banner)

非常感谢任何想法或建议,谢谢!

2 个答案:

答案 0 :(得分:2)

我猜它是因为你没有重置y变量。因此,即使你的所有行都少于60个字符,y也会不断增长和增长直到达到60,然后抛出一个IndexError。

答案 1 :(得分:1)

不要定义硬编码的列表大小,而是使用list.append函数,就像这样

banner = []
for row, line in enumerate(file):
    banner.append([])
    for c in line:
        banner[row].append(c)

更好,使用列表理解,像这样

banner = [[c for c in line] for line in file]

更好的是,使用list功能,就像这样

banner = [list(line) for line in file]

它可以像这样写成

with open("banner", "r") as in_file:
    print(list(map(list, in_file)))