Python中索引和切片的區別
在本文中,我們將向您解釋Python中索引和切片之間的區別。
索引和切片僅適用於序列資料型別。序列型別保留元素插入的順序,允許我們透過索引和切片訪問其元素。
總而言之,Python的序列型別包括列表、元組、字串、範圍、位元組和位元組陣列。索引和切片都適用於所有這些型別。
索引
術語“索引”指的是根據其在可迭代物件中的位置來引用可迭代物件的元素。
索引從0開始。序列中的第一個元素用索引0表示。
負索引從-1開始。序列中的最後一個元素用索引-1表示。
字串中的每個字元對應一個索引號,並且可以透過其索引號訪問每個字元。有兩種方法可以訪問字串中的字元
使用正索引訪問字串字元
使用負索引訪問字串字元
T U T O T I A L S Positive Indexing 0 1 2 3 4 5 6 7 8 Negative indexing -9 -8 -7 -6 -5 -4 -3 -2 -1
使用正索引訪問字串字元
在這種情況下,我們在方括號中傳遞一個正索引(我們希望訪問的索引)。索引號序列從索引號0開始。(表示字串的第一個字元)。
示例
# input string inputString = "Hello tutorialspoint python" print("0th index character:", inputString[0]) print("7th index character", inputString[7]) print("12th index character:", inputString[12])('0th index character:', 'H') ('7th index character', 'u') ('12th index character:', 'a')
輸出
0th index character: H 7th index character u 12th index character: a
使用負索引訪問字串字元
在這種型別的索引中,我們在方括號中傳遞負索引(我們希望訪問的索引)。在這種情況下,索引號從-1開始(表示字串的最後一個字元)。
示例
# input string inputString = "Hello tutorialspoint python" print("last index character:", inputString[-1]) print("6th index character from last:", inputString[-6])('last index character:', 'n') ('6th index character from last:', 'p')
輸出
last index character: n 6th index character from last: p
列表中的索引
示例
# input list inputList =[1, 4, 8, 6, 2] print("Element at index 2:", inputList[2]) print("last element of an input list:", inputList[-1])('Element at index 2:', 8) ('last element of an input list:', 2)
輸出
Element at index 2: 8 last element of an input list: 2
注意
當我們嘗試使用不存在或過大的索引時,它會丟擲IndexError異常。
示例
# input list inputList =[1, 4, 8, 6, 2] # printing the element at index 10 of a input list # throws an IndexError as the index 10 doesn't exist in the input list print("Element at index 10:", inputList[10])Traceback (most recent call last): File "main.py", line 5, in <module> print("Element at index 10:", inputList[10]) IndexError: list index out of range
輸出
Traceback (most recent call last): File "main.py", line 5, in <module> print("Element at index 10:", inputList[10]) IndexError: list index out of range
切片
術語“切片”指的是根據其索引獲得可迭代物件中元素的子集。
我們透過切片建立一個子字串,它實際上是存在於另一個字串中的字串。當我們只需要字串的一部分而不是整個字串時,我們使用切片。
語法
string[start : end : step]
引數
start - index from where to start end - ending index step - numbers of jumps/increment to take between i.e stepsize
字串切片
# input string inputString = "Hello tutorialspoint python" print("First 4 characters of the string:", inputString[: 4]) print("Alternate characters from 1 to 10 index(excluded):", inputString[1 : 10 : 2]) print("Alternate characters in reverse order from 1 to 10 index(excluded):", inputString[-1 : -10 : -2])('First 4 characters of the string:', 'Hell') ('Alternate characters from 1 to 10 index(excluded):', 'el uo') ('Alternate characters in reverse order from 1 to 10 index(excluded):', 'nhy n')
輸出
First 4 characters of the string: Hell Alternate characters from 1 to 10 index(excluded): el uo Alternate characters in reverse order from 1 to 10 index(excluded): nhy n
元組切片
我們可以使用元組切片。它類似於我們如何使用字串和列表。元組切片用於獲取各種專案。我們還使用切片運算子執行元組切片。切片運算子可以用語法表示
語法
[start:stop:step]
示例
# Input tuple givenTuple = ("Welcome", "this", "is", "TutorialsPoint", "Website", 10) # Slicing with start and stop values(indices) print('Tuple slicing from index 1 to index 6 :', givenTuple[1:6]) # Slicing with only stop values(indices) print("Tuple slicing till index 7: ", givenTuple[:7]) # Slicing with only start value(indices) print("Tuple slicing from index 2 is:", givenTuple[2:]) # Slicing without any start and stop values print("Tuple slicing without any start and stop values:", givenTuple[:]) # Slicing in reverse order print("Tuple slicing in reverse order:", givenTuple[::-1])('Tuple slicing from index 1 to index 6 :', ('this', 'is', 'TutorialsPoint', 'Website', 10)) ('Tuple slicing till index 7: ', ('Welcome', 'this', 'is', 'TutorialsPoint', 'Website', 10)) ('Tuple slicing from index 2 is:', ('is', 'TutorialsPoint', 'Website', 10)) ('Tuple slicing without any start and stop values:', ('Welcome', 'this', 'is', 'TutorialsPoint', 'Website', 10)) ('Tuple slicing in reverse order:', (10, 'Website', 'TutorialsPoint', 'is', 'this', 'Welcome'))
輸出
Tuple slicing from index 1 to index 6 : ('this', 'is', 'TutorialsPoint', 'Website', 10) Tuple slicing till index 7: ('Welcome', 'this', 'is', 'TutorialsPoint', 'Website', 10) Tuple slicing from index 2 is: ('is', 'TutorialsPoint', 'Website', 10) Tuple slicing without any start and stop values: ('Welcome', 'this', 'is', 'TutorialsPoint', 'Website', 10) Tuple slicing in reverse order: (10, 'Website', 'TutorialsPoint', 'is', 'this', 'Welcome')
索引與切片的區別
下表顯示了Python中索引和切片之間的一些關鍵區別:
索引 | 切片 |
---|---|
它只返回一個專案 | 它返回一個新的列表/元組 |
如果您嘗試使用過大的索引,則會引發 IndexError 異常。 | 當用於切片時,超出範圍的索引會被溫和地處理。 |
我們不能透過在索引中賦值來更改列表的長度。 | 我們可以透過為切片賦值來更改列表的長度甚至清除列表。 |
我們可以為索引賦值單個元素或可迭代物件。 | 當我們將單個元素賦值給切片時,我們會得到一個TypeError異常。它只接受可迭代物件。 |
結論
藉助示例,我們學習了Python中索引和切片之間的區別。
廣告