Python 元组 index() 语法
index() 是 Python 元组的一个方法,它用于获取元组中指定元素第一次出现的下标(即索引)。
语法:
tuple.index(value, start=0, end=len(tuple))说明:
tuple 是一个元组,index() 方法接收 3 个参数。
x(必选):表示要搜索的元素。start(可选,默认:0):表示开始下标(包含)。end(可选,默认:元组长度):表示结束下标(不包含)。
如果 start 和 end 这两个参数省略,则表示检索整个元组。
如果元组中存在重复的元素,就返回它第一次出现的下标;如果不存在这个元素,则会引发 ValueError 异常。因此,在调用 index() 之前,建议使用 in 运算符或 count() 方法判断元素是否存在。
注意: index() 方法时间复杂度为 O(n),在大型元组中要谨慎使用。
Python 元组 index() 摘要
| 使用频率 | 中 |
|---|---|
| 修改原元组 | 否 |
| 时间复杂度 | O(n)(n 为搜索范围内的元素数量) |
| 官方文档 | 查看 |
Python 元组 index() 示例
接下来,我们通过几个简单的例子来讲解 Python index() 方法是如何使用的。
示例 1:无重复元素的 index()
animals = ('ant', 'bee', 'cat', 'dog', 'ewe')
n = animals.index('dog')
print(n)运行结果如下。
3示例 2:有重复元素的 index()
nums = (3, 8, 32, 8, 59)
n = nums.index(8)
print(n)运行结果如下。
1分析:
元组 nums 中有两个 8,但使用 index() 方法只会返回第一个 8 的下标。
示例 3:元素不存在时使用 index()
languages = ('Python', 'Java', 'Go')
result = languages.index('Rust')
print(result)运行结果如下。
(报错)ValueError: tuple.index(x): x not in tuple分析:
使用 index() 方法是存在一定隐患的,因为如果元素不存在,就会导致程序直接报错。
示例 4:指定 index() 搜索范围(start 和 end)
letters = ('l', 'v', 'y', 'e', 'n', 'e', 't')
# 只有start
result1 = letters.index('e', 4)
print(result1)
# 有start和end
result2 = letters.index('e', 0, 4)
print(result2)运行结果如下。
5
3分析:
index('e', 4) 的检索范围为:从下标 4 到结尾(包含下标 4)。index('e', 0, 4) 的检索范围为:[0, 4),包含 0 但不包含 4。
示例 5:index() 使用负数下标范围
letters = ('l', 'v', 'y', 'e', 'n', 'e', 't')
result = letters.index('e', -3, -1) # 对应索引 4到 6 (注意从 0 开始)
print(result)运行结果如下。
5分析:
index('e', -3, -1) 中的 -3 对应下标 4,而 -1 对应下标 6,因此它检索的范围为:[4, 6)。
示例 6:范围内无匹配元素
letters = ('l', 'v', 'y', 'e', 'n', 'e', 't')
try:
result = letters.index('a', -3, -1) # 对应索引 4到 6 (注意从 0 开始)
except ValueError as e:
print(e)运行结果如下。
(报错)tuple.index(x): x not in tuple分析:
index('a', -3, -1) 表示在范围 [-3, -1) 检索 'a',由于不存在匹配元素,因此会抛出异常。
序列的 index() 方法
Python 中的序列(列表、元组、字符串)都有 index() 方法。对于列表和字符串的 index() 方法,另请参阅:
示例 7:序列的 index() 方法
# 列表
lst = ['red', 'green', 'blue', 'red']
print(lst.index('red'))
# 元组
tup = (2, 1, 2, 3, 4, 2, 5)
print(tup.index(2))
# 字符串
s = 'lvyenet'
print(s.index('e'))运行结果如下。
0
0
3