python - 列表索引超出范围
问题描述
列表中有一个唯一元素。列表中有 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
解决方案
如果列表中的唯一元素位于列表末尾,则在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
推荐阅读
- node.js - 尝试在 backeng 中比较密码时出错 - NODE.JS
- flutter - ontap时如何从其他小部件打开下拉菜单
- spring-boot - Springboot日志级别禁用Gitlab上的DEBUG日志记录
- sql - 计算 KPI 中两列的乘积
- xcode - 从随机生成的标签集合中收集数据
- c# - 调整大小后的 SizeToContent
- python-3.x - SQL Alchemy - 从一个实体上的多个一对一关系中删除孤儿
- graphql - Graphql 哪里/子查询
- python - 在spyder中运行多个实例:取消选择“使用单个实例”的选项是灰色的?
- dockerfile - 将环境变量从 GitLab CI/CD 作业传递给 docker 失败