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中索引和切片之間的區別。

更新於:2022年9月15日

瀏覽量:11K+

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告