对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基于pygame实现的font游戏字体(附源码)
Nov 11 Python
简单介绍Python中的几种数据类型
Jan 02 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
Python探索之pLSA实现代码
Oct 25 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
Python3中关于cookie的创建与保存
Oct 21 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 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/24 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
使用php清除bom示例
2014/03/03 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
Python实现的密码强度检测器示例
2017/08/23 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
用python制作个视频下载器
2021/02/01 Python
年度考核评语
2014/01/19 职场文书
伦敦奥运会口号
2014/06/13 职场文书
增员口号大全
2014/06/18 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2014年校长工作总结
2014/12/11 职场文书
师德师风事迹材料
2014/12/20 职场文书
档案接收函格式
2015/01/30 职场文书
工作简报范文
2015/07/21 职场文书