Python 列表查找,如何在列表中查找项目或者元素索引

在本文中,你将学习如何在Python中查找列表中包含元素的索引。

有几种方法可以实现这一点,在本文中,你将学习三种不同的方式用于查找列表元素的索引
三种技巧如下:

  • 使用 index() 方法查找索引;
  • 使用 for-loop
  • 使用列表推导式和 enumerate() 函数

Python 列表是什么?

列表是Python中的内置数据类型,也是最强大的数据结构之一。
它可以充当容器,用于存储相同变量名下的多个(通常是相关的)项。
每一个元素都被放置在方括号 [] 内,方括号内的每一项都用 , 隔开。

#  'my_information' 列表变量,包含字符串和数字
my_information = ["John Doe", 34, "London", 1.76]

从上面的示例中,你可以看到列表能包含任何数据类型的项,这意味着列表元素可以是多样的。这与只存储相同类型的项的数组不同,列表具备更大的灵活性。
列表也是可变的,这意味着列表是动态的,列表项可以被更新,新项目可以添加到列表中,任何项都可以在程序的整个生命周期中随时删除。

Python索引概述

列表是项目(元素)的集合,它是一个有序的项目集合,并且在很大程度上保留了定义时的顺序。
列表中的每个元素都有一个唯一的位置来标识它,这个位置就是元素的索引。
Python和其它编程语言一样,索引都从0开始,而不是1。
让我们看一下前文中使用的列表。

my_information = ["John Doe", 34, "London", 1.76]
  • 列表的索引为零,计数从0开始;
  • 第一个列表元素 "John Doe" 的索引为0;
  • 第二个列表元素 34 的索引为1;
  • 第三个列表元素 "伦敦" 的索引为2;
  • 第四个列表元素 1.76 的索引为3。

索引对于访问特定位置(索引)的元素非常有用,因此,可以通过使用列表元素的索引来获取列表的任意元素。
要访问某个元素,首先使用列表的名称,然后在方括号中使用要访问的元素的索引对应的整数,下面是使用索引访问每个元素的方法:

my_information = ["John Doe", 34, "London", 1.76]print(my_information[0])
print(my_information[1])
print(my_information[2])
print(my_information[3])# 输出#John Doe
#34
#London
#1.76

那么,如何在Python列表中,查找元素的索引呢?

在接下来的部分中,你将看到一些查找列表元素索引的方法

在Python中使用 list 的 Index() 方法查找元素的索引

到目前为止,你已经了解了如何通过引用某个值的索引号来访问该值,但是,当你不知道索引号,而你正在处理一个大的列表时,会发生什么呢?

你可以给出一个值并找到它的索引,这样就可以检查它在列表中的位置,为此,Python内置了 index() 方法被用作搜索工具。 index() 方法的语法如下所示

my_list.index(item, start, end)

让我们来分析一下:

  • my_list:正在搜索的列表的名称;
  • .index() :具备3个参数的搜索方法,一个参数是必需的,另外两个是可选的;
  • item:必需的参数,它是待搜索其索引的元素;
  • start:第一个可选参数,开始搜索的索引。
  • end:第二个可选参数,结束搜索的索引。

让我们来看一个仅使用必须参数的示例:

programming_languages = ["JavaScript","Python","Java","C++"]print(programming_languages.index("Python"))# 输出
# 1

在上面的例子中, index() 方法只接受 1 个参数,这个参数就是要查找索引的元素,请记住,传递的参数是区分大小写的,这意味着如果你传递的是 "python" 而不是 "Python" ,你会收到一个错误,因为带有小写 "p""python" 不是列表的一部分。它的返回值是一个整数,这个整数就是传递值的索引。

让我们看另一个例子:

programming_languages = ["JavaScript","Python","Java","C++"]print(programming_languages.index("React"))# 输出
# line 3, in <module>
#    print(programming_languages.index("React"))
# ValueError: 'React' is not in list

如果你尝试搜索一个元素,但在正在搜索的列表中没有匹配元素,Python 将抛出一个错误作为返回值,该错误类型是 ValueError ,它表示列表中不存在正在搜索的元素。
防止这种情况发生的一种方法是将 index() 方法的调用放在 try/except 块中。
如果该值不存在,控制台将收到一条消息,表示该值未存储在列表中,因此不存在。

programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]try:print(programming_languages.index("React"))
except ValueError:print("That item does not exist")#输出
#That item does not exist

另一种方法是在查找索引之前,先检查元素是否在列表中,输出将是一个布尔值: TrueFalse

programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]print("React" in programming_languages)#输出
#False

index() 方法中的可选参数

让我们来看看下面的例子:

programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]print(programming_languages.index("Python"))#output
#1

在列表类型的变量 programming_languages 中,有3个待搜索的“Python”字符串实例。
因为在本例中,列表元素数很少,所以有一种反向查找的测试方法,可以数一数,算出它们的索引号,然后像你在前面章节中看到的那样引用它们。

programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]print(programming_languages[1])
print(programming_languages[3])
print(programming_languages[5])#output
#Python
#Python
#Python

一个在位置1,另一个在位置3,最后一个在位置5。
当使用 index() 方法时,为什么它们不显示在输出中?
使用 index() 方法时,返回值仅为列表中第1个出现的项,其余的不会返回, index() 方法只返回元素第1次出现的位置的索引。
可以尝试将可选的开始结束参数传递给 index() 方法。

你已经知道,第一次出现从索引1开始,所以这可能是 start 参数的值,对于end参数,可以先找到列表的长度。
要查找长度,请使用 len() 函数。

print(len(programming_languages)) #output is 6

end 参数的值将是列表的长度减去1,列表中最后一项的索引总是比列表长度小一个,所以,把所有这些放在一起,下面是如何尝试获取该项的所有3个实例。

programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]print(programming_languages.index("Python",1,5))#output
#1

输出仍然只返回第一个实例,尽管开始和结束参数为搜索提供了一系列位置,但使用 index() 方法时返回的值,仍然只是列表中第一个出现的元素。

如何获取列表中所有元素的索引

使用for循环获取列表中所有项目的索引。
让我们使用之前的事例,该列表中出现了三个字符串 “Python”

programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]

首先,创建一个新的空列表,这将是存储“Python”所有索引的列表。

programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]python_indices = []

接下来,使用for循环。这是一种迭代(或循环)列表的方法,并获取原始列表中的每个元素,具体来说,我们循环每个元素的索引号。

programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]python_indices = []for programming_language in range(len(programming_languages)):

首先使用for关键字,然后创建一个变量 programming_language ,它将在迭代过程中充当原始列表中每个元素位置的占位符。
接下来,需要指定for循环应该执行的迭代次数,在这种情况下,循环将从开始到结束遍历列表的整个长度。
语法 range(len(programming_languages)) 是访问列表 programming_languages 中所有元素的一种方式。

range() 函数接受一系列数字,这些数字指定开始计数结束计数的数字。
len() 函数的作用是:计算列表的长度,因此在本例中,计数从0开始,列表的结尾结束。

最后,需要设置一个逻辑条件。
本质上,你的目标是:“如果在迭代过程中,给定位置的元素值等于 Python ,那么将该位置添加到我之前创建的新列表中。”。
使用 append() 方法将元素添加到列表中。

programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]python_indices = []for programming_language in range(len(programming_languages)):if programming_languages[programming_language] == "Python":python_indices.append(programming_language)print(python_indices)#output#[1, 3, 5]

使用列表推导式和 enumerate() 函数获取列表中所有元素的索引

另一种方法是使用列表推导式来找到某个特定元素的所有索引,列表推导式是一种基于现有列表创建新列表的方法,下面是如何使用列表推导式获得字符串 Python 每次出现的所有索引:

programming_languages = ["JavaScript","Python","Java","Python","C++","Python"]python_indices  = [index for (index, item) in enumerate(programming_languages) if item == "Python"]print(python_indices)#[1, 3, 5]

使用 enumerate() 函数,可以存储满足设置条件的元素的索引。
It first provides a pair (index, item) for each element in the list () that is passed as the argument to the function.
首先它会把列表( programming_languages )中的每一个键值对( (index, item) ),作为参数传递到函数中。
index 表示列表项的索引号, item 表示列表项本身。

然后,它充当一个计数器,从0开始计数,并在每次满足设置的条件时递增,选择并移动符合条件的元素的索引。与列表推导式相结合,它将创建一个包含字符串“Python”的所有索引的新列表。

总结

就在这里!现在,你已经知道了在Python的列表中查找元素索引的一些方法,以及查找元素多次出现的索引的方法。
我希望你觉得这篇文章有用。
感谢阅读和愉快的编码!

Python 列表查找,如何在列表中查找项目或者元素索引【翻译】相关推荐

  1. Python:在Pandas数据框中查找缺失值

    How to find Missing values in a data frame using Python/Pandas 如何使用Python / Pandas查找数据框中的缺失值 介绍: (In ...

  2. python中字符串查找子串_Python字符串中查找子串的方法

    Python字符串中查找子串的方法 发布于 2015-04-12 08:58:32 | 230 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对象.解释型计 ...

  3. python列表怎么写文件_python中以字典为元素的列表怎么写入文本文件

    python如何将列表中的元素添加进字典纵然被命运的铁蹄狠狠践踏,也顽强地长出自己的根芽. 录入自己和另一个人的名字的汉语拼音简写,然后依据标识符中字母的数值两个人,一颗心,依偎的不是爱情而是那小温暖 ...

  4. java 字符串 字符查找_java之字符串中查找字串的常见方法

    1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. int indexOf(String str, int startIndex):从指定的索引处开 ...

  5. xlsx如何查找替换_Excel表格中查找替换的功能

    展开全部 1.按下来组合快捷键Ctrl+F将弹出"查自找和替换"2113对话框,如下图所示.5261 2.如果要在当前工作表4102中查找具体的内容可以在1653范围中选择&quo ...

  6. java 数组元素查找_Java在数组中查找指定元素的方法

    Java在数组中查找指定元素我们是用什么方法来实现呢,是使用遍历查找还是使用其它的方法来查找呢,下面给各位整理了一些查找数组元素的例子. 以下实例演示了如何使用 contains () 方法来查找数组 ...

  7. python每行乘列表_python – 在pandas数据帧中查找每行的两列列表中哪一列的最快方法...

    我正在寻找最快的方法来做到以下几点: 我们有一个pd.DataFrame: df = pd.DataFrame({ 'High': [1.3,1.2,1.1], 'Low': [1.3,1.2,1.1 ...

  8. python独立图形_在networkx中查找图形对象中的独立图形

    如果图的部分是真正不相交的(根据您的小示例),那么考虑使用^{}提取子图. 这只适用于无向图,因此如果您使用的是有向图,则需要先转换为无向图.import networkx as nx G = nx. ...

  9. 查找字符位置_Excel中查找字符第N次出现的位置信息,换个思路其实很简单

    在日常的工作中,查找特定字符在一个字符串中的位置是非常常见的操作,但是如果熟悉excel的朋友应该都知道,在Excel中提供的字符查找函数FIND中,无法设置出现次数这个参数.今天,我们就给大家讲解一 ...

最新文章

  1. 《中国式方案秘籍(上部)》
  2. PE文件和COFF文件格式分析——导出表的应用——一种摘掉Inline钩子(Unhook)的方法
  3. 处理器管理与进程管理
  4. 部署在SAP ABAP服务器上的SAP UI5应用的JavaScript文件,是如何被SAP UI5 repository handler处理的
  5. ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First
  6. java上传组件_java上传组件FileUpload
  7. Google Research新成果,让表格理解和检索更上一层楼!
  8. (一)golang工作区
  9. paip.银行卡号的效检
  10. 《电子元器件的可靠性》——3.3节可靠性筛选试验
  11. SCAU高级语言程序设计--实验5 循环结构(一)(2)
  12. 2020年最新世界地图_2020年标准地图发布,为何要发布新版标准地图?
  13. java医疗保险系统_医疗保险管理系统设计 Java
  14. QT TextEdit控件
  15. 信号完整性与电源完整性分析 第三版 pdf_电源完整性,信号完整性,你说哪个更重要一点?...
  16. JavaScript基础学习——CSS预处理Less
  17. opencv入门基础——图像读取,图像显示,图像保存
  18. 单纯p2p理财模式难以发展壮大和长久存在!
  19. Field ‘browser‘ doesn‘t contain a valid alias configuration
  20. 最优化理论与KKT条件

热门文章

  1. linux3.10系统下CH432T(SPI转串口)调试笔记
  2. R中基本统计分析方法整理
  3. app个人资料—头像测试
  4. docker容器内无法删除文件
  5. 在 Visual Studio 的解决方案资源管理器中隐藏一些文件
  6. BBSXP最新漏洞 简单注入检測 万能password
  7. 石上优想要逃离(map)
  8. 2021全球程序员收入报告:字节跳动高级工程师跻身世界第5
  9. 电视剧《一闪一闪亮星星》评论简单分析
  10. 零基础入行软件测试怎么学习~