栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中进行AND / OR?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中进行AND / OR?

正如Matt Ball的回答所解释的,

or
“和/或”。但
or
不适
in
用于您上面使用它的方式。你不得不说
if "a" in someList or "á" in someListor...
。还是更好

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

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

其他注意事项

但是,关于您发布的示例代码,还有更多要说的话。首先,

someList.remove... or someListremove...
这里的语句链是不必要的,并且可能导致意外的行为。这也很难读!最好将其分成几行:

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
    一次。在上述情况下,它没有执行1000个测试,而是仅执行100个。
  2. 它可以用一个操作测试所有的字符,因为
    chars_to_remove
    是一个
    set
    。如果它
    chars_to_remove
    list
    tuple
    ,那么在上述情况下每个测试实际上将是10个测试-因为列表中的每个字符都需要单独检查。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639516.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号