Python中查找包含它的列表元素的索引,index报错!!!

对于列表["foo", "bar", "baz"]和列表中的项目"bar",如何在Python中获取其索引(1)?

 

一、index

>>> ["foo", "bar", "baz"].index("bar")
1

警告如下

请注意,虽然这也许是回答这个问题最彻底的方法是问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

 

如果该项目可能不在列表中,您应该

  1. 首先检查它item in my_list(干净,可读的方法),或
  2. 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 nparray = [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')

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1695. 删除子数组的最大得分(前缀和+哈希+双指针)

文章目录1. 题目2. 解题1. 题目 给你一个正整数数组 nums &#xff0c;请你从中删除一个含有 若干不同元素 的子数组。 删除子数组的 得分 就是子数组各元素之 和 。 返回 只删除一个 子数组可获得的 最大得分 。 如果数组 b 是数组 a 的一个连续子序列&#xff0c;即如果它…

大型网站系统与Java中间件实践

大型网站系统与Java中间件实践&#xff08;贯通分布式高并发高数据高访问量网站架构与实现之权威著作&#xff0c;九大一线互联网公司CTO联合推荐&#xff09; 曾宪杰 著 ISBN 978-7-121-22761-5 2014年4月出版 定价&#xff1a;65.00元 340页 16开 编辑推荐 到底是本什么书…

2019年CSDN人气最高博客排名榜(前20强),业界传说,膜拜!

截止到2019年02月12日&#xff0c;CSDN前二十的大神&#xff1a; 1. stpeace&#xff1a;原创2150&#xff0c;粉丝5037&#xff0c;评论2966&#xff0c;访问量1613万 链接&#xff1a;https://blog.csdn.net/stpeace/ 简介&#xff1a;近几年排名稳步上升&#xff0c;至今仍…

LeetCode 1696. 跳跃游戏 VI(优先队列 / 单调队列)

文章目录1. 题目2. 解题2.1 贪心错误解2.2 优先队列/单调队列1. 题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一开始你在下标 0 处。每一步&#xff0c;你最多可以往前跳 k 步&#xff0c;但你不能跳出数组的边界。 也就是说&#xff0c;你可以从下标 i 跳到…

Unable to open /dev/sda的原因之一

fdsik /dev/sda需要在root权限下运行&#xff0c;普通用户就会出现上述情况。 转载于:https://www.cnblogs.com/cnsec/p/3789828.html

Python判断变量是否存在的方法

方法一&#xff1a;使用try: ... except NameError: ...。 try:var except NameError:var_exists False else:var_exists True 方法二&#xff1a;使用内置函数locals()&#xff1a; locals()&#xff1a;获取已定义对象字典 #testvar未定义 In [1]: testvar in locals().…

LeetCode 1697. 检查边长度限制的路径是否存在(排序+并查集)

文章目录1. 题目2. 解题1. 题目 给你一个 n 个点组成的无向图边集 edgeList &#xff0c;其中 edgeList[i] [ui, vi, disi] 表示点 ui 和点 vi 之间有一条长度为 disi 的边。请注意&#xff0c;两个点之间可能有 超过一条边 。 给你一个查询数组queries &#xff0c;其中 qu…

限制RICHTEXTBOX的输入的范围

附件&#xff1a;http://files.cnblogs.com/xe2011/WindowsFormsApplication_LimitRichTextBoxInput.rarusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using Syst…

NLP项目工作流程

文章目录1. 谷歌Colab设置2. 编写代码3. flask 微服务4. 打包到容器5. 容器托管参考 基于深度学习的自然语言处理使用这篇文章的数据(情感分类)进行学习。 1. 谷歌Colab设置 Colab 地址 新建笔记本 设置 选择 GPU/TPU 加速计算 测试 GPU 是否分配 import tensorflow…

判断 Python 对象是否包含某个属性的方法

先创建两个类&#xff0c;判断类的属性是否存在&#xff1a; class Foo(object):def __init__(self):super(Foo, self).__init__()self.is_whole 1class Doo(object):def __init__(self):super(Doo, self).__init__()f Foo() d Doo() 方法一&#xff1a;通过异常捕捉来实…

牛客 牛牛浇树(差分)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10323/A 来源&#xff1a;牛客网 牛牛现在在花园养了n棵树&#xff0c;按顺序从第1棵到第n棵排列着。 牛牛每天会按照心情给其中某一个区间的树浇水。 例如如果某一天浇水的区间为[2,4]&…

再议 语法高亮插件的选择

之前一篇《为博客园选择一个小巧霸气的语法高亮插件》介绍了语法高亮插件的选择&#xff0c;当时只注重速度了。这些天在做深度定制的时候发现一个严重的问题&#xff0c;匹配精度不够。 什么是匹配精度呢&#xff1f;简单说就是没有把代码分块&#xff0c;是否分的足够细&…

Python自定义时间间隔访问网页

方法一&#xff1a;利用webbrowser import time import webbrowserwhile True: # 死循环time.sleep(60 * 1) # 程序等待时间&#xff0c;这里等待1min&#xff0c;参数的基本单位是秒print("正在访问&#xff1a;请稍等。。。")webbrowser.open("https://blo…

Arch Linux下打不开gnome-shell

可能与未正确设置语言环境有关。 检查语言设置&#xff1a;locale -a 检查当前环境下设置&#xff1a;echo $LANG 检查/etc/locale.conf是否存在&#xff0c;是否正确设置。如果不存在&#xff1a;echo en_US.UTF-8 > /etc/locale.conf转载于:https://www.cnblogs.com/vanit…

牛客 挑选方案问题(排列组合)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10323/B 来源&#xff1a;牛客网 自助餐厅里有5个盘子&#xff0c;里面装的都是面包。 第1个盘子里有无限个面包&#xff1b; 第2个盘子里只有1个面包&#xff1b; 第3个盘子里只有4个面…

微信定时每天给女友发送甜言蜜语(附代码教程)

准备工作&#xff1a; 微信&#xff08;扫码登陆网页版&#xff09;pip install wxpypip install requests 代码教程&#xff1a; from __future__ import unicode_literals from threading import Timer from wxpy import * import requests import randombot Bot()# linu…

【Github教程】史上最全github用法:github入门到精通

原文 http://www.eoeandroid.com/thread-274556-1-1.html 【初识Github】 首先让我们大家一起喊一句“Hello Github”。YEAH!就是这样。Git是一个分布式的版本号控制系统&#xff0c;最初由Linus Torvalds编写&#xff0c;用作Linux内核代码的管理。在推出后&#xff0c;Git在其…

牛客 统计好元组

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10325/A 来源&#xff1a;牛客网 现在给定一个数组arr&#xff0c;和a,b两个数字&#xff0c;你要做的就是找到&#xff08;i&#xff0c;j&#xff0c;k&#xff09;。且满足 1. 0 <…

从内置函数看 Python 的设计思想:len(x) 是否击败 x.len(),

内置函数是 Python 的一大特色&#xff0c;用极简的语法实现很多常用的操作。 它们预先定义在内置命名空间中&#xff0c;开箱即用&#xff0c;所见即所得。Python 被公认是一种新手友好型的语言&#xff0c;这种说法能够成立&#xff0c;内置函数在其中起到了极关键的作用。 …

解密Redis持久化

本文内容来源于 Redis 作者博文&#xff0c;Redis 作者说&#xff0c;他看到的所有针对 Redis 的讨论中&#xff0c;对 Redis持久化的误解是最大的&#xff0c;于是他写了一篇长文来对 Redis 的持久化进行了系统性的论述。文章非常长&#xff0c;也很值得一看&#xff0c;NoSQL…