首页 > 解决方案 > 列表索引超出范围

问题描述

列表中有一个唯一元素。列表中有 n 个相似的数字。

当我尝试运行 while 循环时,会出现列表索引越界。列表中有一个唯一元素。

而(arr[0]==arr[1]):

IndexError:列表索引超出范围

n=int(input())
arr=[int(x) for x in input().split()]
arr.sort()
while (arr[0]==arr[1]):
    for i in range(n):
        arr.pop(0)
print(arr[0])

输入 第一行由一个整数 n 组成,是每个组的大小。第二行包含房间号列表的无序元素。

5

1 2 3 6 5 4 4 2 5 3 6 1 6 5 3 2 4 1 2 5 1 4 3 6 8 4 3 1 5 6 2

输出

8

标签: pythonpython-3.x

解决方案


如果列表中的唯一元素位于列表末尾,则在while循环迭代足够多次后,它将删除所有重复项,并且列表的长度为 1。

此时,arr[0] == arr[1]会崩溃,因为arr[1]引用了你列表的第二个元素,但是你的列表没有两个元素。

您可以更改 while 循环的条件,使其在长度达到 1 时也结束:

while (len(arr) > 1 and arr[0]==arr[1]):

结果:

C:\Users\Kevin\Desktop>test.py
5
1 2 3 6 5 4 4 2 5 3 6 1 6 5 3 2 4 1 2 5 1 4 3 6 8 4 3 1 5 6 2
8

推荐阅读