这段代码的目的是将一个字符串作为输入,然后生成一个字母出现频率的二维数组。因此,对于每个迭代,它都会增加数组中整数的值(例如HI
将是[h][i] =+ 1
)
我的问题是错误信息
list indices must be integers or slices, not tuple
每当我运行下面的代码时就会出现。我已经改变了数组的创建方式,所以它现在被创建为一个列表,当我进入调试模式(letterArray变成了一个列表)时会得到确认
我将字母转换为ASCII的原因是,我可以将它与其他ASCII值进行比较,以同时清除字符串。我打算稍后将字符串转换为小写
我尝试过将letterArray转换成一个列表,尽管这不会改变任何事情,因为letterArray是一个列表。我找不到任何与相同问题的2d数组相关的信息
inputString = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat' #just a test string
inputStringArray = list(inputString) #break into char arrray
letterArray = []
posY = 28
x=0
for i in range(26): #create balnk list of 0s of size 26x26
letterArray.append([])
for j in range(26):
letterArray[i].append(0)
for letter in inputStringArray:
posX = ord(letter)-97 #-97 so that a = 0, z = 25
if posY is 28 and posX <= 26 and posX >= 0: #instantiate first instance of past letter
posY = posX
continue
if posX <= 26 and posX >= 0: #if the char is a letter
x = letterArray[posY,posX]
x +=1
letterArray[posY,posX] = x #increment the space in the array by 1
posY = posX
else:
continue
确切的错误是:
Message=list indices must be integers or slices, not tuple
Source=C:\Users\me\source\repos\InputRecorder\InputRecorder\Recording.py
StackTrace:
File "C:\Users\me\source\repos\InputRecorder\InputRecorder\Recording.py", line 103, in KeysToArray
x = letterArray[posY,posX]
有什么建议吗
您创建了嵌套列表,可以通过以下语法访问该列表:
我看到有一个答案可以解决您的错误消息,但我想给一些建议,以改善您的代码
这里
f1()
是您的代码,f2()
是我的改进建议;它的代码更少,在我看来更容易理解,运行时间也少很多断言结果相同:
比较运行时(
f2
需要f1
此示例输入的一半时间):相关问题 更多 >
编程相关推荐