对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万年历实现代码 含运行结果
May 20 Python
Django实现的自定义访问日志模块示例
Jun 23 Python
Python 实现12306登录功能实例代码
Feb 09 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
python处理大日志文件
Jul 23 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
Python实现i人事自动打卡的示例代码
Jan 09 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 Python
python如何把字符串类型list转换成list
Feb 18 Python
pycharm导入源码的具体步骤
Aug 04 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 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和.net的区别
2014/09/28 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
回顾Javascript React基础
2019/06/15 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
2019/10/14 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
python有几个版本
2020/06/17 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
英文版网络工程师求职信
2013/10/28 职场文书
大学活动策划书范文
2014/01/10 职场文书
小学生学习感言
2014/03/10 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
高中生旷课检讨书
2014/10/08 职场文书
教师师德师风整改措施
2014/10/24 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书