Return 如果一个字符串中的所有字符都在另一个字符串中则为真

Return True if all characters in a string are in another string

好吧,对于这个问题,我打算编写一个函数,如果给定字符串仅包含来自另一个给定字符串的字符,则 returns 为 True。因此,如果我输入 "bird" 作为第一个字符串,"irbd" 作为第二个字符串,它将 return 为真,但是如果我使用 "birds" 作为第一个字符串,并且 "irdb" 作为第二个 return False。到目前为止,我的代码如下所示:

def only_uses_letters_from(string1,string2):
"""Takes two strings and returns true if the first string only contains characters also in the second string.

string,string -> string"""
if string1 in string2:
    return True
else:
    return False

当我尝试 运行 脚本时,如果字符串的顺序完全相同或者我只输入一个字母("bird" 或 "b" 和 "bird" 对比 "bird" 和 "irdb")。

这是 sets 的完美用例。以下代码将解决您的问题:

def only_uses_letters_from(string1, string2):
   """Check if the first string only contains characters also in the second string."""
   return set(string1) <= set(string2)

集很好,但不是必需的(并且可能效率较低,具体取决于您的字符串长度)。你也可以简单地做:

s1 = "bird"
s2 = "irbd"

print all(l in s1 for l in s2)  # True

请注意,一旦 s2 中的字母在 s1 和 return False.

中找不到,这将立即停止