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中索引和切片之间的区别。
广告