我正在尝试为现有列表中的某个位置分配值,但我一直认为我的索引超出了范围。可能是一些愚蠢但我已经尝试了2个小时。
这是我的代码(我从最后一行收到错误:
test="2000 and was not However, implemented 1998 it until;9 8 3 4 1 5 7 2"
saver=[]
text=""
textList=[]
positionList=[]
num=0
for l in test.strip().split(";"):
saver.append(l)
print saver
for i in saver[0].split(" "):
textList.append(i)
print textList
for j in saver[1].split(" "):
positionList.append(j)
print positionList
accomodator=[]*len(textList)
for n in range(1,len(textList)):
n=int(n)
if n not in positionList:
accomodator[n-1]=textList[n-1]
我仍然没有使用过一些变量,但我已经声明了它们,所以请忽略它们。
提前致谢!
答案 0 :(得分:2)
你的问题就在这一行:
accomodator=[]*len(textList)
因为空列表乘以任何数字都是空列表:
>>> [] * 10
[]
您可以使用默认值初始化每个元素:
>>> [None] * 10
[None, None, None, None, None, None, None, None, None, None]
所以代码的修复是:
accomodator=[None]*len(textList)
当然,0
或-1
或您喜欢的任何其他值也可以正常使用。
答案 1 :(得分:0)
accomodator
的长度为零。它会给出索引错误。
试试这个:
accomodator=[]*len(textList)
#print str(len(accomodator)) + " "+str(len(textList))
i = 0;
while i<len(textList):
accomodator.append([])
i +=1
创建accomodator
后,增加其长度。或者,如果您知道增加其长度的效率,则可以使用它。