个性化阅读
专注于IT技术分析

Python列表index()用法

本文概述

数据结构是一种组织和存储数据的方法, 可实现高效的访问和修改。列表是一种数据结构, 用于存储异构项目的集合。列表是内置的数据结构。 Python还提供了许多可用于处理列表的函数或方法。在本教程中, 你将专门学习index()函数。 index()方法搜索列表中的元素并返回其位置/索引。首先, 本教程将向你介绍列表, 然后你将看到一些使用index()函数的简单示例。一直坚持到最后, 以学习更多其他有趣的东西…

列表

列表写在方括号[和]中, 其中的各项用逗号(, )分隔。列表是异构项目的可变存储集合。让我们分解一下语句:可变是什么意思?可变意味着你可以更改列表的内容而无需实际更改其标识。异类项目是什么意思?这意味着列表可以在其内部保存混合值, 例如整数, 浮点数, 字符串等。列表内置于Python中, 因此你无需单独调用它们。首先定义一个列表:

list_x = [] #Empty list
list_x # Print the list to see its contents
[]
list_x = [1, 'two', 3.0]
list_x
[1, 'two', 3.0]
list_y = [1, 2, 3]
list_y
[1, 2, 3]

以上都是列表的示例。 list_x是异构项目的列表, 因为它包含整数, 字符串和浮点数。而list_y保存同类项目-仅整数。

现在, 假设你需要从list_x访问字符串值” two”以进行操作。这是你的处理方式:

value = list_x[1]
print('How do you spell 2?', value)
How do you spell 2? two

列表索引在Python中以0开头。因此, 索引值1为0, “二”为1, 而3为2。

但是, 如果你知道要访问的值却不知道该值将显示在列表中怎么办?还是它甚至存在于列表中?这是index()方法派上用场的时候。

索引

方法index()返回列表中最低的索引, 其中搜索到的元素出现在列表中。如果搜索不存在的任何元素, 则返回ValueError。

让我们尝试一下:

list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 3
list_numbers.index(element)
2
list_numbers = [4, 5, 6, 7, 8, 9, 10]
element = 3 # Not in the list
list_numbers.index(element) # Throws a ValueError
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-35-6a006c988b06> in <module>()
      1 list_numbers = [4, 5, 6, 7, 8, 9, 10]
      2 element = 3 # Not in the list
----> 3 list_numbers.index(element) # Throws a ValueError


ValueError: 3 is not in list

让我们尝试使用字符串元素:

list_numbers = [1, 'two', 3, 4, 5, 6, 7, 8, 9, 10]
element = 'two'
list_numbers.index(element)
1

返回最低索引是什么意思?

假设你有一个元素的多个实例, 然后index()将为你提供该元素出现的第一个位置。

list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
element = 3
list_numbers.index(element)
0

返回的位置是0, 因为3在Python的第一个位置或第0个索引中首先出现。

这是内部发生的情况:索引正在遍历从第一个位置(第一个索引)开始的所有值, 查找你要搜索的元素, 并在找到值后立即返回位置并退出系统。但是, 这在浏览大型列表时不太有效, 你需要将某些东西的位置移到列表的末尾。

index()为你提供一个选项, 以提示你所搜索的值可能在哪里。

list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 7
list_numbers.index(element, 5, 8)
6

因此语法为:list_name.index(element, start, stop)。

此处的开始和结束值是可选的。实际上, 仅在完全确定范围时才使用它, 否则将出现如下所示的ValueError。

list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 7
list_numbers.index(element, 1, 5)
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-39-b96f4b5e51d5> in <module>()
      1 list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
      2 element = 7
----> 3 list_numbers.index(element, 1, 5)


ValueError: 7 is not in list

奖励:由于index()仅将第一个匹配项返回给对象, 因此, 如果你需要列表中更多匹配项的位置, 则可以使用列表理解或生成器表达式。方法如下:

list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
[i for i, n in enumerate(list_numbers) if n == 3] # List comprehension
[0, 3, 4, 8]
list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
g = (i for i, n in enumerate(list_numbers) if n == 3) # Generator expression
print("Generators store values, the first value here is:", next(g), ". Then the next is:", next(g), "followed by ", next(g), "and finally ", next(g))
Generators store values, the first value here is: 0. Then the next is: 3 followed by  4 and finally  8

结束!

恭喜, 你刚刚了解了Python中的index()函数。你已经了解了它如何帮助你使用列表。还向你介绍了一些新概念。有关列表理解的更多信息, 请查看srcmini的Python列表理解教程。 srcmini的Python迭代器教程提供了有关生成器和生成器表达式的更多信息。

赞(0)
未经允许不得转载:srcmini » Python列表index()用法

评论 抢沙发

评论前必须登录!