对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正常时间和unix时间戳相互转换的方法
Apr 23 Python
Python中random模块用法实例分析
May 19 Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 Python
python实现自主查询实时天气
Jun 22 Python
详解通过API管理或定制开发ECS实例
Sep 30 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
在pandas中遍历DataFrame行的实现方法
Oct 23 Python
python二维键值数组生成转json的例子
Dec 06 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
python 实用工具状态机transitions
Nov 21 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 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生成EXCEL的东东
2006/10/09 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
为什么是 Python -m
2020/06/19 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
移动通信行业实习自我鉴定
2013/09/28 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
nginx容器方式反向代理实战
2022/04/18 Servers