对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制作钉钉加密/解密工具
Dec 07 Python
详解python3百度指数抓取实例
Dec 12 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
Python3.6连接Oracle数据库的方法详解
May 18 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
python+mysql实现学生信息查询系统
Feb 21 Python
Python分支语句与循环语句应用实例分析
May 07 Python
python进程间通信Queue工作过程详解
Nov 01 Python
通过python 执行 nohup 不生效的解决
Apr 16 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
Python绘制分类图的方法
Apr 20 Python
python 如何做一个识别率百分百的OCR
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常用字符串比较函数实例汇总
2014/11/24 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
迪拜航空官方网站:flydubai
2017/04/20 全球购物
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
生产主管岗位职责
2013/11/10 职场文书
小学开学寄语
2014/01/19 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
法制报告会主持词
2014/04/02 职场文书
协议书与合同的区别
2014/04/18 职场文书
中秋节活动总结
2014/08/29 职场文书
学生偷窃检讨书
2014/09/25 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
用php如何解决大文件分片上传问题
2021/07/07 PHP
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL