对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利用pyHook实现监听用户鼠标与键盘事件
Aug 21 Python
小白如何入门Python? 制作一个网站为例
Mar 06 Python
对python中raw_input()和input()的用法详解
Apr 22 Python
Python键盘输入转换为列表的实例
Jun 23 Python
Python线程同步的实现代码
Oct 03 Python
django admin.py 外键,反向查询的实例
Jul 26 Python
python openCV获取人脸部分并存储功能
Aug 28 Python
python DataFrame转dict字典过程详解
Dec 26 Python
Python中url标签使用知识点总结
Jan 16 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 15 Python
python调用win32接口进行截图的示例
Nov 11 Python
python实现简单文件读写函数
Feb 25 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
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
js动态删除div元素基本思路及实现代码
2014/05/08 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
python机器学习之决策树分类详解
2017/12/20 Python
Python request设置HTTPS代理代码解析
2018/02/12 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
语文教学随笔感言
2014/02/18 职场文书
合作协议书
2014/04/23 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers