我正在使用此代码:https://pastebin.com/mQkpxdeV
wordlist[overticker] = thesentence[0:spaces]
在这个函数中:
def mediumparser(inpdat3):
spaceswitch = 0
overticker = 0
thesentence = "this sentence is to count the spaces"
wordlist = []
while spaceswitch == 0:
spaces = thesentence.find(' ')
wordlist[overticker] = thesentence[0:spaces] # this is where we save the words at
thesentence = thesentence[spaces:len(thesentence)] # this is where we change the sentence for the
# next run-through
print('here2')
print(wordlist)
我无法弄清楚为什么它只是说列表索引超出范围。
该程序似乎有效,但它出错了,我做错了什么?我看了Mark Lutz的这本书给出了答案,我找不到答案。
答案 0 :(得分:1)
"列表索引超出范围"问题是从不与列表拼接,如这个简单的测试所示:
>>> l = []
>>> l[0:1200]
[]
>>> l[-400:1200]
[]
所以问题出在左手分配wordlist[overticker]
上,它使用了一个列表访问,而不是切片,并且哪个列表索引超出范围"。
您的代码中只有4行足以找到问题
wordlist = []
while spaceswitch == 0:
spaces = thesentence.find(' ')
wordlist[overticker] = ...
wordlist
只是空的。您必须扩展/附加列表(如果您想根据键动态创建项目,则使用字典)
答案 1 :(得分:1)
而不是将wordlist[overticker]
与wordlist
作为空列表,而是需要使用append,因为索引空列表是没有意义的。
wordlist.append(thesentence[0:spaces])
或者,您可以使用20个空字符串预启动列表。
wordlist = [""]*20
wordlist[overticker] = thesentence[0:spaces]
P.S。
wordlist[overticker]
称为索引,wordlist[1:10]
称为切片。