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

时间:2015-03-11 20:49:03

标签: 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

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

2 个答案:

答案 0 :(得分:9)

这是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)

答案 1 :(得分:4)

集很好,但不是必需的(根据你的字符串长度可能效率较低)。您也可以这样做:

s1 = "bird"
s2 = "irbd"

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

请注意,只要在s2中找不到s1中的信件并返回False,该信就会立即停止。