我知道索引超过了这样做的组的最后一个成员的索引,但是如何使函数正常工作?
无论如何,该功能旨在检查列表中的所有成员是否相同。我对另一个功能有相同的问题,该功能旨在检查列表是否正确。它可以与其他所有内容一起使用,但是当所有数字都相同时,它就不起作用了。
i = 0
while i < len(list1):
if list1[i] == list1[i + 1]:
i += 1
else:
return False
return True
错误消息是:“ IndexError:列表索引超出范围”
答案 0 :(得分:2)
当i
达到list1
内的最大索引时,显然list1[i+1]
将超出范围。立即修复是从1开始(然后当然向下比较)或在len(list1)-1
处停止。
但是您可以通过将所有索引与零进行比较来简化操作。
all([list1[0] == x for x in list1[1:]])
或者作为长循环
for elem in list1[1:]:
if elem != list1[0]:
return False
return True
答案 1 :(得分:0)
错误本身来自该行
if list1[i] == list1[i+1]
以上行的部分超出范围。一个简单的解决方法是将while语句更改为此:
while i < (len(list1)-1):
我相信那应该仍然会达到您期望的结果。
使用while循环访问列表中的将来项目时要小心。