Python 切片索引越界的問題(數(shù)組下標(biāo)越界)
前言
Python語(yǔ)言處理字符串、數(shù)組類的問題時(shí)有一定概率需要使用切片方法,比如:Leetcode_5。
學(xué)習(xí)官方解法時(shí)發(fā)現(xiàn)切片的索引可以超出字符串或數(shù)組最大索引值,此時(shí)編譯器不會(huì)報(bào)錯(cuò)。
歡迎大佬留言說明這種情況的具體原因,本文只進(jìn)行一些情況的簡(jiǎn)單測(cè)試。
實(shí)例代碼
a = '123' b = a[:5] print(b)
發(fā)現(xiàn)結(jié)果為123,編譯器沒有報(bào)錯(cuò)。而當(dāng)直接使用a[5]時(shí)即報(bào)錯(cuò)string index out of range。下面是測(cè)試結(jié)果。
測(cè)試代碼(字符串)
a = "1234567890" a1 = a[:] a2 = a[:len(a)] a3 = a[:15] a4 = a[16:16] a5 = a[:2]
運(yùn)行結(jié)果:
This is the id of 'a' :? 2707772994160
This is the type of 'a' :? <class 'str'>
This is the value of 'a' :? 1234567890This is the id of 'a1' :? 2707772994160
This is the type of 'a1' :? <class 'str'>
This is the value of 'a1' :? 1234567890This is the id of 'a2' :? 2707772994160
This is the type of 'a2' :? <class 'str'>
This is the value of 'a2' :? 1234567890This is the id of 'a3' :? 2707772994160
This is the type of 'a3' :? <class 'str'>
This is the value of 'a3' :? 1234567890This is the id of 'a4' :? 2707740774832
This is the type of 'a4' :? <class 'str'>
This is the value of 'a4' :?This is the id of 'a5' :? 2707773122544
This is the type of 'a5' :? <class 'str'>
This is the value of 'a5' :? 12
值得注意的地方:
- 若切片后結(jié)果與原來相同,則新字符串所指向的物理地址就是原字符串的物理地址(a1、a2、a3)。
- 若切片后結(jié)果與原來不同,則新字符串指向新的物理地址(a5)。
- 若當(dāng)前切片索引范圍內(nèi)不存在合法數(shù)值,則返回相應(yīng)類型的空值(a4)。
測(cè)試代碼(數(shù)組)
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' :? 2260784433096
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' :? 2260784432456
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' :? 2260784470920
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' :? 2260784534280
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' :? 2260784471432
This is the type of 'b4' :? <class 'list'>
This is the value of 'b4' :? []This is the id of 'b5' :? 2260784231944
This is the type of 'b5' :? <class 'list'>
This is the value of 'b5' :? [1, 2]
值得注意的地方:
- 數(shù)組切片操作必定指向新的物理地址。
- 若當(dāng)前切片索引范圍內(nèi)不存在合法數(shù)值,則返回相應(yīng)類型的空值(b4)。
到此這篇關(guān)于Python 切片索引越界的實(shí)現(xiàn)(數(shù)組下標(biāo)越界)的文章就介紹到這了,更多相關(guān)Python 切片索引越界內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從DataFrame中提取出Series或DataFrame對(duì)象的方法
今天小編就為大家分享一篇從DataFrame中提取出Series或DataFrame對(duì)象的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python fabric實(shí)現(xiàn)遠(yuǎn)程操作和部署示例
這篇文章主要介紹了python使用fabric實(shí)現(xiàn)遠(yuǎn)程操作和部署示例,需要的朋友可以參考下2014-03-03
Python去除html標(biāo)簽的幾種方法總結(jié)
這篇文章主要介紹了Python去除html標(biāo)簽的幾種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Python Numpy 實(shí)現(xiàn)交換兩行和兩列的方法
今天小編就為大家分享一篇Python Numpy 實(shí)現(xiàn)交換兩行和兩列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
利用Python開發(fā)一個(gè)功能全面的Markdown編輯工具
這篇文章主要為大家詳細(xì)介紹了如何利用Python開發(fā)一個(gè)功能全面的Markdown編輯工具,支持Markdown內(nèi)容的編輯,HTML預(yù)覽等功能,需要的可以參考下2025-03-03
Python并發(fā)編程之進(jìn)程間通信原理及實(shí)現(xiàn)解析
這篇文章主要為大家介紹了Python并發(fā)編程之進(jìn)程間通信原理及實(shí)現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01

