这是按原样工作的,但是当我没有range(len..)、do for i in arr
和for j in arr
时,我在if语句中得到IndexError: list index out of range
。为什么会这样
arr = [2,2,2,2,4,5,2,45,3,4,4]
mostFrq = 0
mostFrqAmount = 0
for i in range(len(arr)):
amountOfCurrent = 0
# now look at temp element
for j in range(len(arr)):
if (arr[j] == arr[i]):
amountOfCurrent = amountOfCurrent + 1
if (amountOfCurrent > mostFrqAmount):
mostFrqAmount = amountOfCurrent
mostFrq = arr[i]
print(mostFrq)
print(mostFrqAmount)
不知道你试过什么。这应该以同样的方式工作:
当你迭代一个列表时,你会得到它的元素。因为您正在访问该元素索引处的列表元素,所以当它超出界限时,它将不起作用(而且无论如何也不会做您期望的事情)
相反,只需使用循环提供的项:
如果您以失败的形式分析代码的情况,您有:
使用
for i in arr
表单返回一个迭代器,该迭代器为您处理索引信息,因此您的“i”被设置为数组中的值当你走到这条线时:
if (arr[j] == arr[i]):
最后用变量替换
arr[45]
数组的索引只会变为10,因此会抛出错误
相关问题 更多 >
编程相关推荐