对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用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
Python实现视频下载功能
Mar 14 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
python多进程读图提取特征存npy
May 21 Python
记录Python脚本的运行日志的方法
Jun 05 Python
python生成随机红包的实例写法
Sep 02 Python
python模块导入的方法
Oct 24 Python
python画蝴蝶曲线图的实例
Nov 21 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
在python里创建一个任务(Task)实例
Apr 25 Python
Python打印特殊符号及对应编码解析
May 07 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/06/09 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
详解Vue2 添加对scss的支持
2019/01/02 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python计算三角函数之asin()方法的使用
2015/05/15 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Python实现快速计算词频功能示例
2018/06/25 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
python 5个顶级异步框架推荐
2020/09/09 Python
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
高等教育学自荐书范文
2014/02/10 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
四群教育工作总结
2015/08/10 职场文书
Ajax实现异步加载数据
2021/11/17 Javascript
船舶调度指挥系统——助力智慧海事
2022/02/18 无线电
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers