我知道索引会超过组最后一个成员的索引,但是如何使函数正常工作?
无论如何,该函数旨在检查列表的所有成员是否相同。我对另一个旨在检查列表是否有序的功能有同样的问题。它适用于其他所有内容,但当它都是相同的数字时,它就不适用。
i = 0
while i < len(list1):
if list1[i] == list1[i + 1]:
i += 1
else:
return False
return True
错误消息是:"索引错误:列出索引超出范围">
当i
达到list1
内的最大索引时,显然list1[i+1]
将超出界限。直接的解决方法是从 1 开始(然后当然向下比较(或停止在len(list1)-1
. 但是,您可以通过将所有索引与第 0 个进行比较来简化。
all([list1[0] == x for x in list1[1:]])
或作为长手循环
for elem in list1[1:]:
if elem != list1[0]:
return False
return True
错误本身来自该行if list1[i] == list1[i+1]
上面行的部分超出了范围。一个简单的解决方法是将 while 语句更改为以下内容:while i < (len(list1)-1):
我相信这应该仍然有你想要的结果。 在访问带有 while 循环的列表中的未来项目时要小心。