前言
Python语言处理字符串、数组类的问题时有一定概率需要使用切片方法,比如:Leetcode_5。
学习官方解法时发现切片的索引可以超出字符串或数组最大索引值,此时编译器不会报错。
欢迎大佬留言说明这种情况的具体原因,本文只进行一些情况的简单测试。
实例代码
a = '123' b = a[:5] print(b)
发现结果为123,编译器没有报错。而当直接使用a[5]时即报错string index out of range。下面是测试结果。
测试代码(字符串)
a = "" a1 = a[:] a2 = a[:len(a)] a3 = a[:15] a4 = a[16:16] a5 = a[:2]
运行结果:
This is the id of 'a' : 60
This is the type of 'a' : <class 'str'>
This is the value of 'a' :This is the id of 'a1' : 60
This is the type of 'a1' : <class 'str'>
This is the value of 'a1' :This is the id of 'a2' : 60
This is the type of 'a2' : <class 'str'>
This is the value of 'a2' :This is the id of 'a3' : 60
This is the type of 'a3' : <class 'str'>
This is the value of 'a3' :This is the id of 'a4' : 32
This is the type of 'a4' : <class 'str'>
This is the value of 'a4' :This is the id of 'a5' : 44
This is the type of 'a5' : <class 'str'>
This is the value of 'a5' : 12
值得注意的地方:
- 若切片后结果与原来相同,则新字符串所指向的物理地址就是原字符串的物理地址(a1、a2、a3)。
- 若切片后结果与原来不同,则新字符串指向新的物理地址(a5)。
- 若当前切片索引范围内不存在合法数值,则返回相应类型的空值(a4)。
测试代码(数组)
b = [1, 2, 3, 4, 5] b1 = b[:] b2 = b[:len(b)] b3 = b[:15] b4 = b[16:16] b5 = b[:2]
This is the id of 'b' : 96
This is the type of 'b' : <class 'list'>
This is the value of 'b' : [1, 2, 3, 4, 5]This is the id of 'b1' : 56
This is the type of 'b1' : <class 'list'>
This is the value of 'b1' : [1, 2, 3, 4, 5]This is the id of 'b2' : 20
This is the type of 'b2' : <class 'list'>
This is the value of 'b2' : [1, 2, 3, 4, 5]This is the id of 'b3' : 80
This is the type of 'b3' : <class 'list'>
This is the value of 'b3' : [1, 2, 3, 4, 5]This is the id of 'b4' : 32
This is the type of 'b4' : <class 'list'>
This is the value of 'b4' : []This is the id of 'b5' : 44
This is the type of 'b5' : <class 'list'>
This is the value of 'b5' : [1, 2]
值得注意的地方:
- 数组切片操作必定指向新的物理地址。
- 若当前切片索引范围内不存在合法数值,则返回相应类型的空值(b4)。
到此这篇关于Python 切片索引越界的实现(数组下标越界)的文章就介绍到这了,更多相关Python 切片索引越界内容请搜索本网站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本网站!
您可能感兴趣的文章:
- Python实现指定数组下标值正序与倒序排序算法功能举例
- 后端代码规范避免数组下标越界
- 解决vue.js提交数组时出现数组下标的问题
- 易语言取数组下标命令使用讲解
- 问题解析:为什么数组下标从0 开始而不是 1 ?