对python中list的五种查找方法说明


Posted in Python onJuly 13, 2020

Python中是有查找功能的,五种方式:in、not in、count、index,find 前两种方法是保留字,后两种方式是列表的方法。

下面以a_list = ['a','b','c','hello'],为例作介绍:

对python中list的五种查找方法说明

string类型的话可用find方法去查找字符串位置:

a_list.find('a')

如果找到则返回第一个匹配的位置,如果没找到则返回-1,而如果通过index方法去查找的话,没找到的话会报错。

对python中list的五种查找方法说明

补充知识:Python中查找包含它的列表元素的索引,index报错!!!

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

一、index

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

警告如下

请注意,虽然这也许是回答这个问题最彻底的方法是问,index是一个相当薄弱的组件listAPI,而我不记得我最后一次使用它的愤怒。在评论中已经向我指出,因为这个答案被大量引用,所以应该更加完整。关于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.

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

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

如果项目不存在则调用index结果ValueError。

>>> [1, 1].index(2)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: 2 is not in list

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

首先检查它item in my_list(干净,可读的方法),或

将index呼叫包裹在try/except捕获的块中ValueError(可能更快,至少当搜索列表很长时,该项通常存在。)

二、enumerate()

大多数答案解释了如何查找单个索引,但如果项目在列表中多次,则它们的方法不会返回多个索引。用途enumerate():

for i, j in enumerate(['foo', 'bar', 'baz']):
  if j == 'bar':
    print(i)

该index()函数仅返回第一个匹配项,同时enumerate()返回所有匹配项。

作为列表理解:

[i for i, j in enumerate(['foo', 'bar', 'baz']) if j == 'bar']

这里还有另一个小解决方案itertools.count()(与枚举几乎相同):

from itertools import izip as zip, count # izip for maximum efficiency

[i for i, j in zip(count(), ['foo', 'bar', 'baz']) if j == 'bar']

对于较大的列表,这比使用更有效enumerate():

$ python -m timeit -s "from itertools import izip as zip, count" "[i for i, j in zip(count(), ['foo', 'bar', 'baz']*500) if j == 'bar']"
10000 loops, best of 3: 174 usec per loop
$ python -m timeit "[i for i, j in enumerate(['foo', 'bar', 'baz']*500) if j == 'bar']"
10000 loops, best of 3: 196 usec per loop

三、NumPy

如果您想要所有索引,那么您可以使用NumPy:

import numpy as np
 
array = [1, 2, 1, 3, 4, 5, 1]
item = 1
np_array = np.array(array)
item_index = np.where(np_array==item)
print item_index
# Out: (array([0, 2, 6], dtype=int64),)

它是清晰易读的解决方案。

四、zip

具有该zip功能的所有索引:

get_indexes = lambda x, xs: [i for (y, i) in zip(xs, range(len(xs))) if x == y]
 
print get_indexes(2, [1, 2, 3, 4, 5, 6, 3, 2, 3, 2])
print get_indexes('f', 'xsfhhttytffsafweef')

以上这篇对python中list的五种查找方法说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3实现生成随机密码的方法
Aug 23 Python
Python、Javascript中的闭包比较
Feb 04 Python
python写日志封装类实例
Jun 28 Python
Python变量和字符串详解
Apr 29 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
python实现redis三种cas事务操作
Dec 19 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
python构建指数平滑预测模型示例
Nov 21 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
Python类成员继承重写的实现
Sep 16 Python
python 将Excel转Word的示例
Mar 02 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 #Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 #Python
Python依赖包迁移到断网环境操作
Jul 13 #Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 #Python
python--shutil移动文件到另一个路径的操作
Jul 13 #Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 #Python
python 安装移动复制第三方库操作
Jul 13 #Python
You might like
用PHP实现文件上传二法
2006/10/09 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
PHP类的反射用法实例
2014/11/03 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
jQuery中next方法用法实例
2015/04/24 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
jQuery使用方法
2017/02/04 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
django框架使用方法详解
2019/07/18 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
JAVA中的关键字有什么特点
2014/03/07 面试题
社团活动总结格式
2014/08/29 职场文书
工会积极分子个人总结
2015/03/03 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
Python面向对象之成员相关知识总结
2021/06/24 Python