我确信这很简单,我已经阅读了关于同一主题的十几篇帖子,但我仍然不明白为什么这不起作用......
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)
非常感谢任何想法或建议,谢谢!
答案 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)))