好吧,对于这个问题,我的意思是编写一个函数,如果给定的字符串只包含来自另一个给定字符串的字符,则返回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 )。
答案 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
,该信就会立即停止。