【发布时间】:2014-01-30 23:43:57
【问题描述】:
在我编写的一个程序中,我正在编写一个从字符列表创建单词列表的程序,我收到“列表索引超出范围”异常。
def getlist(filename):
f = open('alice.txt','r')
charlist = f.read()
wordlist = []
done = False
while(not done):
j = 0
for i in range(0,len(charlist)):
if charlist[i] != ' ' and charlist[i] != '\n':
wordlist[j] += charlist[i]
else: j+= 1
done = i == len(charlist)-1
return wordlist
所以我开始研究列表的工作原理,并发现:
list = ['cars']
list[0]+= '!'
给list = ['cars!']
但是,与:
list = []
list[0]+= '!'
我得到一个越界错误。为什么它不做看起来合乎逻辑的事情:list= ['!']?我该如何解决这个问题?如果我必须用某些东西进行初始化,我怎么知道列表所需的大小?有没有更好、更传统的方法来做我正在尝试的事情?
【问题讨论】:
-
获得所需内容的简单方法是
wordlist = charlist.split()。 -
追加是你的工作。但是,您实际上要问的是为什么“!”当列表中有内容而不是空列表时,将其“附加”到列表中。那么在一个你有汽车这个词。因此,当您说 list[0] 时,您实际上并没有要求返回列表,而是要求返回字符串“cars”,因此您要添加“!”给它。如果您要求 list[0] 中没有任何内容,则 list 中没有任何内容。这就是您看到边界错误的原因。