python - python 中区分字符串

标签 python python-3.x

如果第一个字符串中的字母也包含在第二个字符串中,我希望能够返回True。例如,only_uses_letters_from("boffo","foobar") 应返回 True。这是我到目前为止所拥有的:

def only_uses_letters_from(x, y):
    """returns true if the first string only contains characters that are also in the second string

    str, str -> str"""
    for letter in x:
        if x in y:
            return True
    else:
        return False

最佳答案

您可以使用set.issubset检查 a 中的每个元素是否都在 b 中:

a, b = "boffo", "foobar"
print(set(a).issubset(b))
True

所以在你的函数中:

def only_uses_letters_from(x, y):
     return set(x).issubset(y)

或者使用all,检查x中的每个字母都在in b中:

def only_uses_letters_from(x, y):
    return all(letter in y for letter in x)

如果我们在 x 中找到 y 中没有的字母,则全部短路,返回 False,如果所有字母都在 y 中,则返回 True。

如果您有大量数据,使用集合可以是一种快速方法来检查一个可迭代对象中的任何元素是否在另一个可迭代对象中:

def only_uses_letters_from(x, y):
      st = set(y)  # O(1) lookups
      return all(letter in st for letter in x)

关于python - python 中区分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28400989/

相关文章:

python - 使用 CherryPy 加载静态内容

python - 使 np.sums 的 for 循环运行得更快的方法

python - 通过 Tensorflow 中的段长度计算 tf.math.segment_sum 中所需的段 ID

python - 两个字符串之间的正则表达式匹配?

python - 适用于 Python 3.5.1 的 OpenCV

python - 获取 DateTimeIndex 周期的平均值,然后将它们重新分配到原始数据框列

python - 如何在 IPython 提示中重用现有的 sys.ps1 格式化程序?

python-3.x - 如何使 pandas read_csv 处理 numpy str(或 unicode)标量数据类型

python - 为什么该函数没有返回所需的列表?

python - 为什么 Python 代码在函数中运行得更快?