对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函数的笔记整理
Apr 07 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
python字典DICT类型合并详解
Aug 17 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
python如何读取bin文件并下发串口
Jul 05 Python
Python 200行代码实现一个滑动验证码过程详解
Jul 11 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 Python
python和node.js生成当前时间戳的示例
Sep 29 Python
python+flask编写一个简单的登录接口
Nov 13 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 20 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 压缩文件夹的类代码
2009/11/05 PHP
php 各种应用乱码问题的解决方法
2010/05/09 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
查摆剖析材料范文
2014/09/30 职场文书
医学生自荐信范文
2015/03/05 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
给校长的建议书范文
2015/09/14 职场文书
学习党史心得体会2016
2016/01/23 职场文书
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android