在 Python 中有几种类型的集合来存储数据。按位置排序的元素集合通常称为序列,列表和字符串都属于它们。列表中的每个元素以及字符串中的每个字符都有一个与其位置对应的索引。索引用于访问序列中的元素。索引是从零开始的,所以如果你看到一个从零开始计数的人,你一定遇到过程序员。
元素索引
要通过索引访问列表中的元素,您需要使用方括号。您在列表之后添加方括号,并在它们之间写下您想要获取的元素的索引。
别忘了,索引从 0 开始,所以第一个元素的索引为 0。最后一个元素的索引等于len(list) - 1
。
让我们看一下下面的例子:
colors = ['red', 'green', 'blue']
first_elem = colors[0] # 'red'
second_elem = colors[1] # 'green'
third_elem = colors[2] # 'blue'
字符串以相同的方式工作:
pet = "cat"
first_char = pet[0] # 'c'
second_char = pet[1] # 'a'
third_char = pet[2] # 't'
潜在的陷阱
使用索引时,保持在序列范围内很重要:如果您尝试访问具有不存在索引的元素,则会收到错误(IndexError)!
colors = ['red', 'green', 'blue']
pet = "cat"
print(colors[3]) # IndexError: list index out of range
print(pet[3]) # IndexError: string index out of range
想象一下,您想更改列表中的一个元素。它可以很容易地做到:
colors = ['red', 'green', 'blue']
colors[1] = 'white'
print(colors) # ['red', 'white', 'blue']
然而,当涉及到字符串时,这种重新分配是不可能的。与列表不同,字符串是不可变的,因此您不能使用索引修改它们的内容:
pet = "cat"
pet[0] = "b"
# TypeError: 'str' object does not support item assignment
负索引
访问列表或字符串末尾的元素的更简单方法是使用负索引:数字前的减号以某种方式改变了您的观点,您从末尾开始查看序列。因此,在这种情况下,列表的最后一个元素的索引等于-1,列表的第一个元素具有索引-len(list)
(列表的长度)。
colors = ['red', 'green', 'blue']
last_elem = colors[-1] # 'blue'
second_elem = colors[-2] # 'green'
first_elem = colors[-3] # 'red'
pet = "cat"
last_char = pet[-1] # 't'
second_char = pet[-2] # 'a'
first_char = pet[-3] # 'c'
如您所见,它对列表和字符串的工作方式相同。
IndexError
. 小心索引以避免代码中的错误。
下图显示了列表中索引的一般概念:
概括
在本主题中,我们了解了 Python 中的正索引和负索引,如何通过索引在列表中查找元素,以及使用它们时可能出现的错误。既然您已经了解了索引的概念,我们希望从现在开始您在使用它们时不会遇到任何困难!