美文网首页
python3下,list为空,切片时下标越界也不报错

python3下,list为空,切片时下标越界也不报错

作者: 丙吉 | 来源:发表于2022-07-25 10:44 被阅读0次
问题 回看自己的代码发现里面有个BUG,空list 在窗口切片时,下标越界也不报错。

比如我想把一个原始列表,进行去重处理,如果原始列表的当前元素不在新建列表的窗口内,我则填加至新列表,之前写的代码,回看里面有个BUG, 对开始的几个,就是空List,还去取切片,不是应该取不到才对么?就去查找了下原因。
代码如下:

del_1 =[]
ori_1 = [1,2,1,2,1,2,3,4,5]
for i in range(len(ori_1)):
    if ori_1[i] not in del_1[-5:]:
        del_1.append(ori_1[i])
        print('当前元素为第{}'.format(i),'窗口为5的新列表为',del_1)

# 结果如下:
当前元素为第0 窗口为5的新列表为 [1]
当前元素为第1 窗口为5的新列表为 [1, 2]
当前元素为第6 窗口为5的新列表为 [1, 2, 3]
当前元素为第7 窗口为5的新列表为 [1, 2, 3, 4]
当前元素为第8 窗口为5的新列表为 [1, 2, 3, 4, 5]
但如果List中单独取某个下标越界的元素会报错。
ori_1[20]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-25-093d4095441b> in <module>
----> 1 ori_1[20]

IndexError: list index out of range
image.png

原因:当访问索引超出其长度的列表中的元素时,不能返回任何内容(无法表示不存在的元素),这就是抛出错误的原因。但是,当切片时,是在对原始列表进行切片复制,如果开始或结束无效,新列表可以为空,所以不抛出错误。

相关文章

  • python3下,list为空,切片时下标越界也不报错

    问题 回看自己的代码发现里面有个BUG,空list 在窗口切片时,下标越界也不报错。 比如我想把一个原始列表,进行...

  • JS数组

    一、三不限 不限制数组类型。 不限制下标越界。获取元素值时,下标越界不报错,返回undefined。 不限制元素个...

  • 0#1Python特有

    list [a,b,c,d]下标取值,可负数 切片 spam[:]全部spam[:1]后面末尾不包含可相加list...

  • 插入排序

    第5行先判断j是否大于等于0防止切片下标越界

  • list tuple dict set

    List Python内置的一种数据结构 有序 可更改 声明 获取列表长度 获取元素 如果下标越界会报错 更改 增...

  • day_005 Python中的列表、元组、字典和集合

    一、列表 1.修改列表元素 通过下标获取元素,然后重新赋值:list[下标] = 新的值 注意:下标不能越界示例:...

  • Java 字符串 split 的一个反直觉陷阱

    最近生产环境遇到一个奇怪的数组下标越界报错,如下图代码所示,我们可以肯定的是 fieldName 变量不为空(不是...

  • ios中数组的 firstObject 和 [0]的区别

    两者都是取第一个元素。区别在于数组为空时,firstObject会返回nil,但是[0]发生数组下标越界导致崩溃。

  • 关于TypeError: unhashable type set

    python3报错:TypeError: unhashable type set/list/dict 错误原因:在...

  • 错误

    有越界问题,超出会报错:IndexError: list index out of range 删除变量再访问,这...

网友评论

      本文标题:python3下,list为空,切片时下标越界也不报错

      本文链接:https://www.haomeiwen.com/subject/ezdgirtx.html