Python 中的“与”/“或”? [复制]

2024-04-22

我知道and and orpython中存在表达式,但是有没有and/or表达?或者以某种方式将它们组合起来以产生与and/or表达?

我的代码看起来像这样:

if input=="a":        
    if "a" or "á" or "à" or "ã" or "â" in someList:            
        someList.remove("a") or someList.remove("á") or someList.remove("à") or someList.remove("ã") or someList.remove("â")

我的意思是,如果用户输入“a”并且任何类型的“a”包含在先前定义的列表中,我可以从给定列表中删除所有类型的“a”吗?

python 告诉我有一个问题:

someList.remove("a") or someList.remove("á") or someList.remove("à") or someList.remove("ã") or someList.remove("â")

他告诉我:ValueError: list.remove(x): x not in list


As 马特·鲍尔 https://stackoverflow.com/a/10149756/577088的回答解释说,or is“和/或”。但or不适用于in按照你上面的使用方式。你不得不说if "a" in someList or "á" in someList or...。或者更好的是,

if any(c in someList for c in ("a", "á", "à", "ã", "â")):
    ...

这就是你所问问题的答案。

其他注意事项

但是,关于您发布的示例代码还有一些话要说。首先,链someList.remove... or someList remove...这里的语句是不必要的,并且可能会导致意外的行为。读起来也很困难!最好将其分成单独的行:

someList.remove("a")
someList.remove("á")
...

然而,这还不够。正如您所观察到的,如果该项目不在列表中,则会引发错误。最重要的是,使用remove非常慢,因为每次调用它时,Python 都必须查看列表中的每一项。因此,如果您想要删除 10 个不同的字符,并且您的列表有 100 个字符,则必须执行 1000 次测试。

相反,我建议采用一种非常不同的方法。使用过滤列表set,像这样:

chars_to_remove = set(("a", "á", "à", "ã", "â"))
someList = [c for c in someList if c not in chars_to_remove]

或者,就地更改列表而不创建副本:

someList[:] = (c for c in someList if c not in chars_to_remove)

它们都使用列表理解语法来创建新列表。他们审视剧中的每一个角色someList,检查字符是否在chars_to_remove,如果不是,则将该字符包含在新列表中。

这是该代码最有效的版本。它有两个速度优势:

  1. 它只经过someList一次。在上述场景中,它只执行 100 次,而不是执行 1000 次测试。
  2. 它可以通过一次操作测试所有字符,因为chars_to_remove is a set. If it chars_to_remove were a list or tuple,那么在上述场景中,每个测试实际上是 10 个测试 - 因为列表中的每个字符都需要单独检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的“与”/“或”? [复制] 的相关文章

随机推荐

  • 如何使用 drf-yasg 自动生成的 swagger 页面配置“HTTPS”方案?

    我知道在传统的 swagger YAML 文件中 我们可以使用以下方式定义方案 schemes http https OR schemes http https 但是 我如何使用自动生成的 swagger 页面做同样的事情drf yasg图
  • Android MediaRecorder 和 setOutputFile

    我阅读了 Android SDK 发现 MediaRecorder 类可以从相机 音频或其他源获取输入并对其进行压缩 通过 setOutputFile 方法 您可以指定要存储数据的位置 文件或 URI 但是如果我想将该数据存储在内存缓冲区中
  • 将字符向量列表转换为数据帧

    我的输出 a 看起来像 str a List of 8883695 chr 1 3 20MICRONS A ACCRUALS chr 1 3 20MICRONS A ACCRUALS chr 1 3 20MICRONS A ACCRUALS
  • 检查针对 SQL Server 数据库的 LINQ 查询

    有什么方法可以在 NET 中查看我们正在触发的针对数据库的 LINQ 查询吗 例如 我正在 LINQ 中编写一个查询 我想看看触发了什么 SQL 查询来与数据库进行通信 有没有 Visual Studio 窗口或其他方式 你在寻找类似的东西
  • 带 python 列表的循环引用

    有人可以解释一下吗 gt gt gt x x 0 0 gt gt gt x gt gt gt x is x 0 True gt gt gt x 0 0 0 0 0 0 0 gt gt gt x in x True what is 这只是 P
  • OpenCV 3.0.0 使用 FFMPEG 时出错

    我使用 OpenCV 一段时间了 但是 我最近将系统更改为没有任何管理员权限的集群 问题是这样的 在我的主文件夹中 我安装了 FFMPEG ffmpeg 网站上提供的最新稳定版本 我将它安装在 HOME 中 因此在 HOME lib 中安装
  • sso 用户的 s3 存储桶策略

    我想允许特定角色 test role 在特定存储桶 test bucket 上执行所有 s3 操作 拒绝为所有其他人提供桶 我写的 s3 策略 Version 2012 10 17 Id Policy1601973417173 Statem
  • 以编程方式发送自动电子邮件[重复]

    这个问题在这里已经有答案了 我想以编程方式发送电子邮件 我尝试了以下代码 最终意图 emailIntent 新意图 android content Intent ACTION SEND emailIntent setType plain t
  • iOS:Firebase 令牌返回 null

    我目前正在尝试按照 Firebase 官方文档来实现 Firebase Cloud Messaging 我已在启用推送通知的情况下解决了证书和配置文件的问题 我还使用 CocoaPods 安装了所有必要的框架 FirebaseMessagi
  • 将 LinkBut​​ton 的 OnClick 事件设置为代码隐藏中的方法

    我正在从我的代码隐藏构造一个 LinkBut ton 我需要将 onclick 分配给一个方法 并用它传递一个参数 到目前为止我有这个 LinkButton lnkdel new LinkButton lnkdel Text Delete
  • 在 FIFO 上写入“复杂”结构

    我正在使用 C 语言与客户端服务器进行某种 餐厅 实现 我正在尝试通过 FIFO 发送以下结构 typedef struct int numtable table number to send answer char timestamp 2
  • 没有带有常量“模板参数”的 F# 泛型?

    我突然想到 F 泛型似乎不接受常量值作为 模板参数 假设有人想创建一种类型RangedInt这样 它的行为类似于 int 但保证只包含整数值的子范围 一种可能的方法是建立受歧视的工会 类似于 type RangedInt Valid of
  • 使用 ggplot 约束 stat_smooth 中的斜率(绘制 ANCOVA)

    Using ggplot 我试图绘制 ANCOVA 的结果 其中两个线性分量的斜率相等 即lm y x A 默认行为为geom smooth method lm 是为每个因子的每个水平绘制单独的斜率和截距 例如 有两个级别A library
  • 具有两个以上固定效应的 Python 面板数据回归

    我有一个面板数据库 想运行考虑固定效应的回归 使用Panel Ols 时 两个固定效果可以正常工作 我的代码如下所示 df countyCode pd Categorical df countyCode df state pd Catego
  • 如何从带有通配符的字符串中获取Appx全名?

    在 Powershell 中 此命令Get AppxPackage name 可以显示包裹的完整详细信息 是否可以使用任何 Windows API 来获得等效结果 我见过这个question https stackoverflow com
  • python cdist 错误 ValueError: XA 必须是二维数组

    这是我的代码的缩短版本 dist array ssd cdist test y training test y 打印的是 0 00000000e 00 1 79900000e 01 1 03800000e 01 1 22800000e 02
  • 在 SQL 中获取运行总计最大值的高性能方法

    我们有一个交易表 其结构如下 TranxID int PK and Identity field ItemID int TranxDate datetime TranxAmt money TranxAmt 可以是正数或负数 因此该字段 对于
  • PostgreSQL 对连接中的表数量有限制吗?

    今天在玩动态查询生成时 我发现 mysql 对连接中可以使用的表数量有一个硬性最大限制 61 这让我想知道 PostgreSQL 是否有类似的限制 注 我问这个是出于好奇 而不是需要 据我所知没有限制 一旦超过 可配置的 表限制 查询优化器
  • Spring Boot 安全 - Thymeleaf sec:授权不起作用

    我正在尝试使用 Spring Boot Spring Security 4 Thymeleaf 如果用户具有 admin 角色或其他角色 应该显示 html 块 但现在它始终显示在页面上 这是我的html div p class bg in
  • Python 中的“与”/“或”? [复制]

    这个问题在这里已经有答案了 我知道and and orpython中存在表达式 但是有没有and or表达 或者以某种方式将它们组合起来以产生与and or表达 我的代码看起来像这样 if input a if a or or or or