在列表中查找一个值[重复]

2024-03-01

我使用以下命令来检查是否item is in my_list:

if item in my_list:
    print("Desired item is in list")

Is "if item in my_list:“在列表中查找项目的最“Pythonic”方式?

编辑重新开放:这个问题被认为是重复的,但我并不完全相信:她这个问题大致是“什么是最重要的”Pythonic在列表中查找元素的方法”。这个问题的第一个答案在所有 Python 方法中都非常广泛。

而在链接的重复问题及其相应答案上,焦点大致仅限于 Python 中的“in”关键字。我认为与当前的问题相比,这确实是有限制的。

我认为当前问题的答案比拟议的重复问题/答案的答案更相关和更详细。


至于你的第一个问题:“if item is in my_list:“ 完全没问题,如果item等于里面的元素之一my_list。该项目必须exactly匹配列表中的项目。例如,"abc" and "ABC"不匹配。浮点值尤其可能会出现不准确的情况。例如,1 - 1/3 != 2/3.

至于你的第二个问题:如果在列表中“查找”内容,实际上有几种可能的方法。

检查里面是否有东西

这是您描述的用例:检查某些内容是否在列表中。如您所知,您可以使用in运算符:

3 in [1, 2, 3] # => True

过滤集合

即查找序列中满足一定条件的所有元素。您可以使用列表理解或生成器表达式来实现:

matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)

后者将返回一个发电机您可以将其想象为一种惰性列表,只有在迭代它时才会构建它。顺便说一句,第一个完全等同于

matches = filter(fulfills_some_condition, lst)

在 Python 2 中。在这里您可以看到高阶函数的工作情况。在Python 3中,filter不返回列表,而是返回类似生成器的对象。

查找第一个出现的位置

如果您只想匹配条件的第一个内容(但您还不知道它是什么),那么使用 for 循环就可以了(可能使用else子句也是如此,这并不是众所周知的)。您还可以使用

next(x for x in lst if ...)

这将返回第一个匹配项或引发StopIteration如果没有找到。或者,您可以使用

next((x for x in lst if ...), [default value])

查找项目的位置

对于列表,还有index如果您想知道,有时会很有用的方法where列表中存在某个元素:

[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError

但请注意,如果有重复项,.index总是返回最低的索引:......

[1,2,3,2].index(2) # => 1

如果有重复项并且您想要所有索引,那么您可以使用enumerate()反而:

[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在列表中查找一个值[重复] 的相关文章

  • 通过getattr动态获取dict元素?

    我想动态查询我想要检索的类中的哪些对象 getattr似乎是我想要的 并且它对于类中的顶级对象表现良好 但是 我还想指定子元素 class MyObj object def init self self d a 1 b 2 self c 3
  • 如何从字符串读取 NumPy 二维数组?

    如何从字符串中读取 Numpy 数组 取一个像这样的字符串 0 5544 0 4456 0 8811 0 1189 并将其转换为数组 a from string 0 5544 0 4456 0 8811 0 1189 where a成为对象
  • Boto3 - 打印 AWS 实例平均 CPU 利用率

    我正在尝试仅打印 AWS 实例的平均 CPU 利用率 此代码将打印出 响应 但最后的 for 循环不会打印平均利用率 有人可以帮忙吗 先感谢您 import boto3 import sys from datetime import dat
  • TypeError:PyQt4.QtCore.QVariantAnimation 表示 C++ 抽象类,无法实例化

    我有这个 PyQt5 片段 我正在尝试将其转换为 PyQt4 PyQt5 版本运行得很好 但是当我尝试转换为 PyQt4 时 出现此错误 我删除了QtWidgets但我仍然收到此错误 我也尝试过实例化self animation QtCor
  • 将ast节点转换为python对象

    给定一个ast可以自行计算的节点 但字面意义不够ast literal eval例如列表理解 src i 2 for i in range 10 a ast parse src Now a body 0 is an ast Expr and
  • 在 ReportLab 中向画布元素添加超链接的最简单方法是什么?

    我正在使用 ReportLab 使用 Python 制作 pdf 我想向画布添加一个形状 并让该形状充当超链接 使以下示例中的矩形链接到 google com 的最简单方法是什么 from reportlab pdfgen import c
  • 实现一个java UDF并从pyspark调用它

    我需要创建一个在 pyspark python 中使用的 UDF 它使用 java 对象进行内部计算 如果它是一个简单的 python 我会做类似的事情 def f x return 7 fudf pyspark sql functions
  • Python 中的类位于不同的文件中吗?

    与 Java 或 php 非常相似 我习惯将类与文件分开 Python 中也是同样的情况吗 另外 我应该如何命名该文件 像classname py一样小写还是像ClassName py一样 如果我想从此类创建一个对象 我是否需要做一些特殊的
  • 如何从 __subclasses__ 中删除类?

    当从类继承时 子类可以通过父类访问 subclasses method class BaseClass pass class SubClass BaseClass pass BaseClass subclasses
  • AMD plaidml 与 CPU Tensorflow - 意外结果

    我目前正在运行一个简单的脚本来训练mnist数据集 通过 Tensorflow 通过我的 CPU 运行训练给了我49us sample和使用以下代码的 3e 纪元 CPU import tensorflow as tf mnist tf k
  • 我应该如何在 Python 中将 HTTPHandler 与 RotatingFileHandler 链接起来?

    我需要创建一个系统 将嵌入式系统中生成的日志消息远程记录在服务器上并存储在轮换日志文件中 由于网络通信的限制 日志消息必须通过HTTP协议传输 服务器已经运行了Flask http flask pocoo org 基于 HTTP 服务器 因
  • 向类添加属性的更 Pythonic 方式?

    我正在使用来自两个不同网页的数据集 但对于同一个人 数据集是合法信息 一些数据在第一页上可用 因此我使用正确的信息初始化被告对象 并将我当前没有数据的属性设置为null 这是班级 class Defendant object holds d
  • 当按下 flutter 中编写的按钮时,有没有办法运行 python 脚本?

    本质上 我想做的是 按下我在 Flutter 中编程的按钮 当按下该按钮时 Python 脚本应该开始在我的 Android 设备上运行 我想在 python 中使用 youtube dl 用于下载 Youtube 视频 库 但我想知道是否
  • 如何提取数字(以及比较形容词或范围)

    我正在用 Python 开发两个 NLP 项目 它们都有类似的任务提取数值和比较运算符来自句子 如下所示 greater than 10 weight not more than 200lbs height in 5 7 feets fas
  • 在 python matplotlib 中格式化损坏的 y 轴

    我正在 matplotlib 中处理一个 相当复杂的 条形图 它包含来自多个源的摘要数据 每个源都沿 x 轴标记 y 轴上有一系列结果 许多结果都是异常值 我尝试使用断开的 y 轴来显示这些结果 而不会使用以下组合来扭曲整个图表这个方法 h
  • 自动滚动的实时行情(如 Twitter 的“热门推文”)

    是否有一个好的 Javascript 库可以生成自动滚动列表 例如 Twitter 主页上的 热门推文 最好作为 jQuery 插件 它还应该支持 AJAX 功能 动态添加新列表项 由于我们对现有的解决方案并不满意 因此我们从头开始实施了一
  • Python 中字典的 enumerate()

    我知道我们用enumerate用于迭代列表 但我在字典上尝试过 但没有给出错误 CODE enumm 0 1 1 2 2 3 4 4 5 5 6 6 7 7 for i key in enumerate enumm print i key
  • 如何将目录导入为 python 模块

    如果有目录 home project aaa 我知道它是一个Python包 那么 我如何通过知道它的路径来导入这个模块 这意味着 我希望代码能够正常工作 aaa load module home project aaa 我知道的唯一方法是
  • 为什么“模型尚未加载”?

    我正在尝试使用 customUser 安装 django registration redux 我已将其包含在我的 settings py 中 AUTH USER MODEL app customUser 注册表位于目录 registrat
  • 用 Ruby 或 Python 解析 SVG 的库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 SVG 是一个庞大的标准 它基于 XML 我过去曾将 SVG 解析为 XML 然而 有些事情很难 例如

随机推荐