>>> ["foo", "bar", "baz"].index("bar")

1

警告如下

请注意,虽然这可能是回答问题的最简洁方法,但索引是列表API的一个相当弱的组件,我不记得上次我在愤怒中使用它了.在评论中已经向我指出,因为这个答案被大量引用,所以应该更加完整.关于list.index的一些警告如下.最初可能需要查看文档字符串:

>>> print(list.index.__doc__)

L.index(value, [start, [stop]]) -> integer -- return first index of value.

Raises ValueError if the value is not present.

列表长度的线性时间复杂度

索引调用按顺序检查列表中的每个元素,直到找到匹配项.如果您的列表很长,并且您不知道列表中的大致位置,则此搜索可能会成为瓶颈.在这种情况下,您应该考虑不同的数据结构.请注意,如果您大致知道匹配的位置,则可以为索引提供提示.例如,在这个片段中,l.index(999_999,999_990,1_000_000)比直接l.index(999_999)快大约五个数量级,因为前者只需搜索10个条目,而后者搜索一百万个:

>>> import timeit

>>> timeit.timeit('l.index(999_999)', setup='l = list(range(0, 1_000_000))', number=1000)

9.356267921015387

>>> timeit.timeit('l.index(999_999, 999_990, 1_000_000)', setup='l = list(range(0, 1_000_000))', number=1000)

0.0004404920036904514

仅将第一个匹配的索引返回到其参数

对索引的调用按顺序搜索列表,直到找到匹配项,然后停在那里.如果您希望需要更多匹配的索引,则应使用列表推导或生成器表达式.

>>> [1, 1].index(1)

0

>>> [i for i, e in enumerate([1, 2, 1]) if e == 1]

[0, 2]

>>> g = (i for i, e in enumerate([1, 2, 1]) if e == 1)

>>> next(g)

0

>>> next(g)

2

我曾经使用过索引的大多数地方,我现在使用列表推导或生成器表达式,因为它们更具有推广性.因此,如果您正在考虑使用索引,请查看这些出色的python功能.

如果元素不在列表中,则抛出

如果项目不存在,则对index的调用会导致ValueError.

>>> [1, 1].index(2)

Traceback (most recent call last):

File "", line 1, in

ValueError: 2 is not in list

如果该项目可能不在列表中,您应该

>首先使用my_list中的项目(干净,可读的方法)检查??它,或者

>将索引调用包装在try / except块中,该块捕获ValueError(可能更快,至少当搜索列表很长时,该项通常存在.)

python中index从列表中查_在Python中查找包含它的列表的项目的索引相关推荐

  1. python中列表的查_每日一记----python中的列表【查询和插入】

    首先说说什么是列表,先看官方解释:列表是python中的最基本的数据结构.那么既然是数据结构,肯定是用来存储数据的,我的理解中:列表就是一组数据按照一定的顺序进行存储.那我们用什么区确定每一个元素的位 ...

  2. Python中查找包含它的列表元素的索引,index报错!!!

    对于列表["foo", "bar", "baz"]和列表中的项目"bar",如何在Python中获取其索引(1)? 一. ...

  3. python list去重并删除某些元素_使用Python实现list(列表)中的重复元素删除,例如: X= [1,1,2,a,a,[1,2,3]] 去重后:X= 「1,2,a,[1,2...

    题目要求的实质是列表内部元素的去重,有两种思路:第一种,删除的思路,判断列表中的元素是否出现重复,如果有重复,删除重复出现的元素直到剩下最后一个:第二种,添加的思路,新建空列表,将新列表中不包含.原列 ...

  4. 在python中print表示的数据类型是_【Python连载】那些必须掌握的Python数据类型

    原标题:[Python连载]那些必须掌握的Python数据类型 经过近几年的发展,Python已成为了数据科学和机器学习的首选语言,许多人也因此开始走上自学python之路.从今天开始,本公众号将陆续 ...

  5. 在python中定义类时、运算符重载_自定义 Python 类中的运算符和函数重载(上)...

    如果你对 Python 中的str对象使用过 + 或 * 运算符,你一定注意到了它的操作与 int 或 float 类型的区别: 你可能想知道同一内置运算符或函数如何对不同类对象进行不同操作的.这分别 ...

  6. python按某列拆分excel表格_利用Python+Pandas实现从一个excel表中提取列形成新表

    简要 利用python实现把一个工作表中的某些列,和其中单独的一列,提取成为一个个新表. 如图(处理前)蓝色部分是需要保留的列,红色是需要一项一项分出来作为单独表格的列. 其中,第一行的名字是用的回车 ...

  7. python显示3位数不够0补位_关于Python开发中的那些坑总结,令人防不胜防,建议收藏!...

    在学习 Python 的过程中,我为它的简洁优雅而痴迷,但它又是如此的调皮,在提供了很多舒服的功能特性之外,又悄悄挖了很多带有迷惑性的坑,令人防不胜防- 人不能两次踏入同一条河流,在无数次踩进同样的坑 ...

  8. python中format函数用法简书_从Python安装到语法基础,这才是初学者都能懂的爬虫教程...

    Python和PyCharm的安装:学会Python和PyCharm的安装方法 变量和字符串:学会使用变量和字符串的基本用法 函数与控制语句:学会Python循环.判断语句.循环语句和函数的使用 Py ...

  9. python中texttable库显示实时数据_用Python串口实时显示数据并绘图pyqtgraph

    用Python串口实时显示数据并绘图 使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 &qu ...

  10. python动态更新窗口上的图片_基于Python实现matplotlib中动态更新图片(交互式绘图)...

    最近在研究动态障碍物避障算法,在Python语言进行算法仿真时需要实时显示障碍物和运动物的当前位置和轨迹,利用Anaconda的Python打包集合,在Spyder中使用Python3.5语言和mat ...

最新文章

  1. linux mysql c语言编程,在Linux下通过C语言操作MySQL数据库
  2. MATLAB读取文本文件----textread
  3. python语言程序设计教程-Python语言程序设计(视频教程)
  4. RabbitMQ基本概念(一)-RabbitMQ的优劣势及产生背景
  5. 云炬Android开发笔记 3-1项目架构初始化
  6. android 按比例缩放,Android postScale不按比例缩放
  7. 面对焦虑,我们能做什么?
  8. java中间件是什么意思_数据库中间件漫谈
  9. Qt5.7+Opencv2.4.9人脸识别(五)人脸识别
  10. 正态分布的前世今生:误差分布曲线的确立
  11. google嗅探(简洁实用版)
  12. 9、ffplay音频的波谱图及频谱图源码分析
  13. 喜马拉雅xm格式转化mp3_强大的视频格式转换工具
  14. bzoj1597: [Usaco2008 Mar]土地购买
  15. 芬兰建筑师帕特里克艾瑞克森先生一行访问云创
  16. Spring系列——@lazy注解
  17. STM32F103C8T6定时器产生PWM
  18. Android studio真机调试(用小米10s为例)
  19. Codeforces 1324D(红黑树+求指定区间中大于指定值的个数)
  20. Placing Lampposts UVA - 10859 放置街灯 树形dp

热门文章

  1. LCAOSCF自洽场氟化氢HF斯莱特函数
  2. html post后404,为什么在vue-cli脚手架下启动的服务器POST返回404呢?WebStorm启动没有问题?...
  3. java获取服务器信息吗_java获取服务器一些信息的方法
  4. STM32 进阶教程 18 – ADC间断模式
  5. 【DIY】光剑(一):炽焰长剑的诞生
  6. ubuntu安装配置samba共享
  7. 在Eclipse上搭建Android C开发环境
  8. PDF页眉页脚怎么设置
  9. React入门:从零搭建一个React项目
  10. mysql分区方案的研究