对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局部赋值的规则
Mar 07 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
Apr 24 Python
Python入门学习之字符串与比较运算符
Oct 12 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 Python
Ruby元编程基础学习笔记整理
Jul 02 Python
python根据unicode判断语言类型实例代码
Jan 17 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
Python 使用元类type创建类对象常见应用详解
Oct 17 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
Pandas-DataFrame知识点汇总
Mar 16 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中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
Python的time模块中的常用方法整理
2015/06/18 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
python 判断矩阵中每行非零个数的方法
2019/01/26 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
Python加速程序运行的方法
2020/07/29 Python
Python实现异步IO的示例
2020/11/05 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
应届大学生自荐信格式
2013/09/21 职场文书
策划总监岗位职责
2014/02/16 职场文书
银行委托书范本
2014/09/28 职场文书
技术股东合作协议书
2014/12/02 职场文书
保护动物的宣传语
2015/07/13 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL