检查所有列表元素是否相同的代码返回索引错误?



我知道索引会超过组最后一个成员的索引,但是如何使函数正常工作?

无论如何,该函数旨在检查列表的所有成员是否相同。我对另一个旨在检查列表是否有序的功能有同样的问题。它适用于其他所有内容,但当它都是相同的数字时,它就不适用。

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 循环的列表中的未来项目时要小心。

最新更新