检查所有列表元素是否相同的代码返回IndexError?

时间:2019-09-27 15:23:06

标签: python python-3.x

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

无论如何,该功能旨在检查列表中的所有成员是否相同。我对另一个功能有相同的问题,该功能旨在检查列表是否正确。它可以与其他所有内容一起使用,但是当所有数字都相同时,它就不起作用了。

i = 0

while i < len(list1):
    if list1[i] == list1[i + 1]:
        i += 1

    else:
        return False

return True

错误消息是:“ IndexError:列表索引超出范围”

2 个答案:

答案 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循环访问列表中的将来项目时要小心。