如果第一个字符串中的字母也包含在第二个字符串中,我希望能够返回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/