判断字符串x是否是y的子字符串的Python方法是:

if x in y:

如果x相当于abcdefg,那么发现x也是肾盂的:

if x in [a,b,c,d,e,f,g]:

但判断某个字符串x是否包含abcdefg似乎有些笨拙:

if a in x or b in x or c in x or d in x or e in x or f in x or g in x

有没有更简单的方法来判断字符串x是否包含列表元素?

我知道自己用循环或正则表达式写这篇文章很简单:

re.search('(dog|cat|bird|mouse|elephant|pig|cow)', x)

但我想知道是否有一种更干净的方式不涉及正则表达式.

推荐答案

Pythonic的方法是使用any():

if any(s in x for s in (a,b,c,d,e,f,g)):

从链接的文档中:

100(iterable)

如果iterable中的任何元素为True,则返回True.如果iterable为空,则返回False.相当于:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

另外,请注意,我在这里使用了元组而不是列表.如果您的a-g值是预定义的,那么元组确实是首选.见:Are tuples more efficient than lists in Python?

Python-3.x相关问答推荐

在Pytorch中打印每个历元或每个index_data的损失

使用魔方无法从图像中识别单个字符

是什么原因导致Pandas=2.1.4和Pandas=1.4.2之间Pandas DataFrame中从Float64到int32的连续列转换方式不同

基于另一个数据帧计算总和

Django中自动设置/更新字段

如何使用 regex sub 根据列表中的变量替换字符

如何禁用 pylint 禁止自用警告?

Python:如何在三个列表中找到共同值

Python 3x 的最佳机器学习包?

Tkinter AttributeError:对象没有属性'tk'

在数据类中创建类变量的正确方法

IronPython 3 支持?

Python中调用者函数的访问变量

判断 dict.items() 中的成员资格的时间复杂度是多少?

接收导入错误:没有名为 *** 的模块,但有 __init__.py

python 3的蓝牙库

无 Python 错误/错误?

每次启动 Google Colab 时都必须安装所需的软件包吗?

命名参数可以与 Python 枚举一起使用吗?

如何判断列表中的所有项目是否都是字符串