Python中索引和切片的区别

Python中索引和切片的区别

在本文中,我们将解释Python中索引和切片之间的区别。

索引和切片仅适用于序列数据类型。序列类型中插入元素的顺序被保留,使我们可以通过索引和切片访问其元素。

总之,python的序列类型有list, tuple, string, range, byte和byte arrays。索引和切片适用于所有这些类型。

索引

“索引”一词是指基于可迭代对象内部的位置引用一个元素。

索引从0开始。序列中的第一个元素由索引0表示。

负索引从-1开始。序列中的最后一个元素由索引-1表示。

字符串中的每个字符都对应一个索引号,并且每个字符都可以通过其索引号访问。有两种方法可以访问字符串中的字符

  • 使用正索引访问字符串字符

  • 使用负索引访问字符串字符

                  T  U  T  O  T  I  A  L S
正索引             0  1  2  3  4  5  6  7  8
负索引            -9 -8 -7 -6 -5 -4 -3 -2 -1

使用正索引访问字符串中的字符

在这种情况下,我们通过方括号传递正数索引(我们希望访问的索引)。 索引号序列从0开始。(代表字符串的第一个字符)。

例子

# 输入字符串
inputString = "Hello tutorialspoint python"

print("第0个索引字符:", inputString[0])
print("第7个索引字符", inputString[7])

print("第12个索引字符:", inputString[12])

('第0个索引字符:', 'H')
('第7个索引字符', 'u')
('第12个索引字符:', 'a')

输出

第0个索引字符: H
第7个索引字符 u
第12个索引字符: a

使用负索引访问字符串字符

在这种类型的索引中,我们通过方括号传递负索引(我们要访问的索引)。这种情况下,索引号从-1开始(表示字符串的最后一个字符)。

例子

# 输入字符串
inputString = "Hello tutorialspoint python"
print("最后一个索引字符:",[-1])
print("从后往前数第6个索引字符:", inputString[-6])
('最后一个索引字符:', 'n')
('从后往前数第6个索引字符:', 'p')

输出

最后一个索引字符: n
从后往前数第6个索引字符: p

列表中的索引

例子

# 输入列表
inputList =[1, 4, 8, 6, 2]
print("索引为2的元素:", inputList[2])
print("输入列表的最后一个元素:", inputList[-1])
('索引为2的元素:', 8)
('输入列表的最后一个元素:', 2)

输出

索引为2的元素: 8
输入列表的最后一个元素: 2

注意

当我们尝试使用不存在或太大的索引时,会抛出 IndexError

示例

# 输入列表
inputList =[1, 4, 8, 6, 2]
# 打印输入列表索引为10的元素
# 由于索引10不存在于输入列表中,会引发IndexError
print("索引为10的元素:", inputList[10])
Traceback (most recent call last):
  File "main.py", line 5, in <module>
    print("索引为10的元素:", inputList[10])
IndexError: list index out of range

输出

Traceback (most recent call last):
File "main.py", line 5, in <module>
print("索引为10的元素:", inputList[10])
IndexError: list index out of range

切片

术语“ 切片 ”是指基于它们的索引从可迭代对象中获取子集元素。

我们通过切片创建一个子字符串,它实际上是存在于另一个字符串中的字符串。当我们只需要字符串的一部分而不是整个字符串时,我们使用切片。

语法

string[start : end : step]

参数

start - 开始索引
end - 结束索引
step - 要在中进行的跳数/增量,即步长

字符串切片

# 输入字符串
inputString = "Hello tutorialspoint python"
print("字符串的前4个字符:", inputString[: 4])
print("从1索引到10索引(不包括)的每个字符:", inputString[1 : 10 : 2])
print("从1索引到10索引(不包括)的每个字符的逆序:", inputString[-1 : -10 : -2])
('字符串的前4个字符:', 'Hell')
('从1索引到10索引(不包括)的每个字符:', 'el uo')
('从1索引到10索引(不包括)的每个字符的逆序:', 'nhy n')

输出

字符串的前4个字符: Hell
从1索引到10索引(不包括)的每个字符: el uo
从1索引到10索引(不包括)的每个字符的逆序: nhy n

元组切片

我们可以使用元组切片。与使用字符串和列表的方式类似。元组切片用于获取各种物品。我们也使用切片操作符来执行元组切片。切片操作符可以用语法表示

语法

[start:stop:step]

示例

# 输入元组
givenTuple = ("Welcome", "this", "is", "TutorialsPoint", "Website", 10)
# 使用开始值和停止值(索引)切片
print('Tuple slicing from index 1 to index 6 :', givenTuple[1:6])
# 只使用停止值(索引)切片
print("Tuple slicing till index 7: ", givenTuple[:7])
# 只使用开始值(索引)切片
print("Tuple slicing from index 2 is:", givenTuple[2:])
# 不使用任何开始和停止值进行切片
print("Tuple slicing without any start and stop values:", givenTuple[:])
# 以相反的顺序进行切片
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')

索引 vs 切片的区别

下表显示了Python中索引和切片的主要差异-

索引 切片
它只返回1个项目 它返回一个新的list/tuple
如果尝试使用太大的索引,则会抛出IndexError。 用于切片时,处理超出范围的索引。
我们不能通过项赋值在索引中更改列表的长度。 通过将项分配给切片,可以更改列表的长度甚至将其清除。
我们可以将单个元素或可迭代项分配给索引。 当我们将单个元素分配给切片时,会出现TypeError。它只接受可迭代项。

结论

通过示例,我们学习了Python中索引和切片之间的区别。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程