对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 相关文章推荐
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
跟老齐学Python之通过Python连接数据库
Oct 28 Python
python实现telnet客户端的方法
Apr 15 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
python3实现点餐系统
Jan 24 Python
Pandas读写CSV文件的方法示例
Mar 27 Python
numpy.where() 用法详解
May 27 Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 Python
Python headers请求头如何实现快速添加
Nov 03 Python
Python pygame实现中国象棋单机版源码
Jun 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安全配置详细说明
2011/09/26 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
laravel5.6实现数值转换
2019/10/23 PHP
jQuery 操作XML入门
2008/12/25 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
医学生求职自荐书
2014/06/12 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
2014司机年终工作总结
2014/12/05 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
党委工作总结2015
2015/04/27 职场文书
聘用合同范本
2015/09/21 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python