python列表索引out of range是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python列表索引out of range是啥意思?相关的知识,希望对你有一定的参考价值。

在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

参考技术A 列表索引out of range,意思就是你访问列表时使用的索引,超出了列表范围。
比如:
a = [1,2,3]
print(a[8])
这时就会 out of range 报错

python列表删除会出现一个错误 list index out of range

1,这是列表在删除的时候出现的一个问题,目的是为了删除列表中的0元素

# _*_ coding:utf-8 _*_
# __author__ = 'dragon'
P = [0, 1, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0,
     44, 1, 0]
for i in range(0,len(P)-1):
    if(P[i] == 0):
        del P[i]
print P 

显示的错误如下:

将图中的del换成pop也会出现上面的问题

2.下面给出正确的解决代码如下

# _*_ coding:utf-8 _*_
# __author__ = 'dragon'
P = [0, 1, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0,
     44, 1, 0]

for i in reversed(range(len(P))):
    if(P[i] == 0):
        del P[i]
print P

正确的显示如下所示:

这里如果将换成pop一样的可以得到正确的结果

3.原因分析:为什么会出现上面这种情况呢?

3.1 首先有一点要明确:列表不可随意乱删

3.2 要得到上面正确结果有多种方式,要是出现这种问题可以按2中正确解决

3.3 造成上面问题的一个原因就是列表的索引在删除之前是固定的,如果采用第一种方式range(5) 索引是按从小到大排列的

删除一个索引所对应的值后,python会自动吧删除的位置补上来,这样就会导致从删除位位置开始现在索引和原索引相差1个,导致出现上面的问题。如果是reversed (len(range(5))),这种索引是按从大到小的顺序排列,就相当于range(5-1,-1,-1)

这样在自动补充索引的时候就不会出现上面的情况。

以上是关于python列表索引out of range是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

python 列表 越界怎么处理?list index out of range

python列表删除会出现一个错误 list index out of range

IndexError: list index out of range ,同时在python的列表中查找第一个不连续的数字

Pytorch 错误“RuntimeError: index out of range: 试图访问索引 512 out of table with 511 rows”

IndexError :Replacement index 1 out of range for positional args tuple

packet len* is out of range!