对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 相关文章推荐
python的即时标记项目练习笔记
Sep 18 Python
python: line=f.readlines()消除line中\n的方法
Mar 19 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
Nov 29 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 Python
python反编译教程之2048小游戏实例
Mar 03 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 Python
python中tkinter复选框使用操作
Nov 11 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文件读写操作之文件读取方法详解
2011/01/13 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
php头像上传预览实例代码
2017/05/02 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
JavaScript使用cookie
2007/02/02 Javascript
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
详解Python3.1版本带来的核心变化
2015/04/07 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
金鑫耀Java笔试题
2014/09/06 面试题
初中政治教学反思
2014/01/17 职场文书
超市促销活动方案
2014/03/05 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
毕业生评语大全
2015/01/04 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
经营场所使用证明
2015/06/19 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
详解OpenCV曝光融合
2022/04/29 Python