如果字符串中的所有字符都在另一个字符串中,则返回True

lil*_*ili 4 python string boolean

好吧,对于这个问题,我的意思是编写一个函数,如果给定的字符串只包含来自另一个给定字符串的字符,则返回True.因此,如果我输入"bird"作为第一个字符串并输入"irbd"作为第二个字符串,它将返回True,但如果我使用"birds"作为第一个字符串而"irdb"作为第二个字符串则返回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
Run Code Online (Sandbox Code Playgroud)

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

Cea*_*sta 9

这是套装的完美用例.以下代码将解决您的问题:

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)
Run Code Online (Sandbox Code Playgroud)

  • 关.将`<`更改为`<=` - 否则`only_uses_letters_from("bird","bird")=> False (4认同)
  • 接得好.编辑我的回答. (3认同)

jed*_*rds 5

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

s1 = "bird"
s2 = "irbd"

print all(l in s1 for l in s2)  # True
Run Code Online (Sandbox Code Playgroud)

请注意,一旦s2在 中 找不到字母s1并返回,此操作将立即停止False