為什麼Python中字串切片索引超出範圍仍然有效?
切片是Python中用於提取序列(例如字串、列表或元組)一部分的技術。切片涉及指定序列的起始和結束索引,生成的切片將包含從起始索引到(但不包括)結束索引的所有元素。
Python中的切片用方括號[]表示,並提供用冒號“:”分隔的起始和結束索引。如果省略起始索引,則假定為0;如果省略結束索引,則假定為序列的長度。
例如,假設我們有一個包含單詞“Python”的字串text
要使用切片提取此字串的前三個字元,我們可以使用以下程式碼
示例
text = "Python" first_three = text[0:3] print(first_three)
輸出
Pyt
我們還可以使用**切片中的負索引**從序列的末尾開始計數。例如,要提取字串text的最後兩個字元,我們可以使用以下程式碼
此處,text[−2:]表示“獲取從倒數第二個字元開始到字串末尾的字串切片”。
示例
text = "Python" last_two = text[-2:] print(last_two)
輸出
on
切片還可以用於從序列中提取每第n個元素。例如,要從字串text中提取每隔一個字元,我們可以使用以下程式碼
此處,text[::2]表示“獲取從字串開頭到字串結尾的字串切片,但只包含每個第二個字元”。
示例
text = "Python" every_other = text[::2] print(every_other)
輸出
Pto
在Python中,使用超出範圍的索引切片子串不會導致錯誤。相反,它將返回空字串或部分子串,具體取決於情況。這乍一看可能很奇怪,但在某些情況下它很有用。
以下是一些示例,有助於解釋其工作原理
使用超出範圍的起始索引進行切片
示例
在此示例中,我們從索引20開始切片字串text。由於text的長度只有11個字元,因此索引20處沒有字元。Python不會報錯,而是返回一個空字串。
text = "Lorem Ipsum" substring = text[20:] print(substring)
使用超出範圍的結束索引進行切片
示例
在此示例中,我們對字串text進行切片,直到索引20。由於text的長度只有12個字元,因此沒有足夠的字元達到索引20。Python不會報錯,而是返回整個字串。
text = "Lorem Ipsum" substring = text[:20] print(substring)
輸出
Lorem Ipsum
使用超出範圍的步長索引進行切片
示例
在此示例中,我們使用步長索引20對字串text進行切片。由於字串中沒有足夠的字元來完成20的完整步長,Python返回部分子串。
text = "Lorem Ipsum" substring = text[::20] print(substring)
輸出
L
示例
在此示例中,我們嘗試從索引3到15切片子串,但字串text只有11個字元。但是,Python不會引發錯誤,而是返回從索引3到字串末尾的子串。
text = "Lorem Ipsum" substring = text[3:15] print(substring)
輸出
em Ipsum
示例
在此示例中,我們嘗試從索引15到20切片子串,但字串text只有11個字元。由於結束索引超出範圍,Python返回空字串。
text = "Lorem Ipsum" substring = text[15:20] print(substring)
示例
在此示例中,我們嘗試從索引-5到15切片子串。Python中的負索引從字串末尾開始計數,因此-5指的是字串末尾的第5個字元。由於起始索引在範圍內,而結束索引超出範圍,Python返回從起始索引到字串末尾的子串。
text = "Lorem Ipsum" substring = text[-5:15] print(substring)
輸出
Ipsum
總而言之,在Python中使用超出範圍的索引進行切片不會導致錯誤,因為這在某些情況下可能很有用。但是,在使用Python中的字串時,務必注意這種行為,以免出現意外結果。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP