list index out of range是怎么回事
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了list index out of range是怎么回事相关的知识,希望对你有一定的参考价值。
list index out of range一般是由于数组下标超过数组长度了:如在C语言中:a[10], 那么你引用a[10]就会出这类型错误(因为其范围是a[0]~a[9])在python中:a = [1,2,3,4,5], 那么如果你使用a[5]也会出类似问题(范围为a[0]~a[4])。
外部输入的数据都可能存在问题。所以通常在readlines后要做一次处理:
for line in file.readlines():
if not line.strip():continue
r = line.split('\\t')
if len(r)<3:continue
print r
try:
records.setdefault(int(r[1]), )
records[int(r[1])].setdefault(int(r[0]), )
records[int(r[1])][int(r[0])] = float(r[2])
except ValueErro:
continue
这样就避免了空行,字段数不足,以及类型转换出错。
扩展资料:
Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)许可。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。
7月20日,IEEE发布2017年编程语言排行榜:Python高居首位 。2018年3月,该语言作者在邮件列表上宣布 Python 2.7将于2020年1月1日终止支持。用户如果想要在这个日期之后继续得到与Python 2.7有关的支持,则需要付费给商业供应商。
参考技术A在python中,list index out of range意思是列表的索引分配超出列范围。
对于有序序列: 字符串 str 、列表 list 、元组 tuple进行按索引取值的时候,默认范围为 0 ~ len(有序序列)-1,计数从0开始,而不是从1开始,最后一位索引则为总长度减去1。
当然也可以使用负数表示从倒数第几个,计数从-1开始,则对于有序序列,总体范围为 -len(有序序列) ~ len(有序序列)-1,如果输入的取值结果不在这个范围内,则报这个错。
解决办法:检查索引是否在 -len(有序序列) ~ len(有序序列)-1 范围内,修改正确。如下图,len(a)=2,则对于有序序列,总体范围为 0~ 1。
扩展资料:
在Python编程语言中List 是标准类库中的一个类,可以简单视之为双向链表,以线性列的方式管理物件集合。
list 的特色是在集合的任何位置增加或删除元素都很快,但是不支持随机存取。list 是类库提供的众多容器(container)之一,除此之外还有vector、set、map、…等等。
list() 方法用于将元组转换为列表。注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。
list 以模板方式实现(即泛型),可以处理任意型别的变量,包括使用者自定义的资料型态例如:它可以是一个放置整数(int)型态的 list、也可以是放置字串(char 或 string)型态的 list、或者放置使用者自定类别(user-defined class)的 list。
参考资料:百度百科——python
参考技术B集合越界了的意思。比如这个list的大小只有5,而你使用了list[10],就会报集合索引越界。
集合框架示意图:
list接口的一些实现类:
扩展资料:
list与set都继承于Collection,list序列的形式存储元素。所以取出来的顺序可能和放入顺序不同。set的特点是无法存放重复的元素。map一个映射不能包含重复的键;每个键最多只能映射一个值。以键值对存放数据以上三个都是接口且不能被实例化。
参考资料:百度百科-set
参考技术Cpython中出现list index out of range有两种情况:
第1种可能情况:list[index]index超出范围,也就是常说的数组越界。
第2种可能情况:list是一个空的, 没有一个元素,进行list[0]就会出现该错误,这在爬虫问题中很常见,比如有个列表爬去下来为空,统一处理就会报错。
如在C语言中:a[10], 那么你引用a[10]就会出这类型错误(因为其范围是a[0]~a[9])。在python中:a = [1,2,3,4,5], 那么如果你使用a[5]也会出类似问题(范围为a[0]~a[4])。
扩展资料
尽管列表允许把自身作为元素包含在内,但建议要特别小心:在这样的列表上,equals 和 hashCode 方法不再是定义良好的。
某些列表实现对列表可能包含的元素有限制。例如,某些实现禁止 null
元素,而某些实现则对元素的类型有限制。
试图添加不合格的元素会抛出未经检查的异常,通常是 NullPointerException 或
ClassCastException。试图查询不合格的元素是否存在可能会抛出异常,也可能简单地返回 false;某些实现会采用前一种行为,而某些则采用后者。
概括地说,试图对不合格元素执行操作时,如果完成该操作后不会导致在列表中插入不合格的元素,则该操作可能抛出一个异常,也可能成功,这取决于实现的选择。此接口的规范中将这样的异常标记为“可选”。
参考技术D集合越界了的意思。比如这个list的大小只有5,而你使用了list[10],就会报集合索引越界。
集合框架示意图:
list接口的一些实现类:
Set和List的区别
1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
Python常见错误:IndexError: list index out of range
用python写脚本查询字典时,在遍历字典时循环到某一项时老是报错
出现这种错误有两种情况:
第1种可能情况
list[index]index超出范围
第2种可能情况
list是空值就会出现
IndexError: list index out of range
第二种情况尤为难以排除错误
以上是关于list index out of range是怎么回事的主要内容,如果未能解决你的问题,请参考以下文章
Python常见错误:IndexError: list index out of range
关于python list index out of range
IndexError: list index out of range list超出了?要怎么改?