我想定义一个函数find_anagrams_in_word_list(str,str_list),其中参数应该是字符串和字符串列表。返回的值应该是str_list中作为str值的所有字符串的列表。
我有一个简单的代码,可以让你看到一个单词是否是另一个单词的字谜
def anagram(str1,str2):
str1 = sorted(str1)
str2 = sorted(str2)
if str1 == str2:
print("True")
else:
print("False")
但我似乎无法理解如何将其用于列表。
修改的
def anagram(str1,str2):
str1 = sorted(str1)
str2 = sorted(str2)
if str1 == str2:
print("True")
else:
print("False")
def find_anagrams_in_word_list(str1,str_list):
anagrams = []
for word in str_list:
if word == str1:
if (anagram(str1,word)):
anagrams.append(word)
print(anagrams)
我在创建此代码时已经做到了这一点,但如果它们是' str1'的字谜,则不是打印这些字词。它打印' []'我认为这意味着str_list中的单词没有附加到' anagrams'
我想要这样的输出
find_anagrams_in_word_list(" rat"," [art,tar,gar,jay]")
'艺术' '焦油'
因为它们是老鼠的字谜。答案 0 :(得分:0)
def anagram(str1,str2):
str1 = sorted(str1)
str2 = sorted(str2)
if str1 == str2:
return True
else:
return False
print [i for i in str_list if anagram(str,i)]
这里,str是要匹配的字符串,str_list是所有字符串的列表
修改强>:
要将此功能转换为功能,请尝试以下操作:
def anagram(str1,str_list):
str1 = sorted(str1)
temp_list=[i for i in str_list if sorted(i)==str1]
return temp_list
答案 1 :(得分:0)
def anagram(str1,str2):
str1 = sorted(str1)
str2 = sorted(str2)
return str1 == str2 # will be True or False no need for if checks
def find_anagrams_in_word_list(str1,str_list):
return " ".join([word for word in str_list if anagram(word,str1)])
print (find_anagrams_in_word_list("rat", ["art","tar","gar","jay"]))
art tar
if anagram(word,str1)
检查传入的str1中的每个或列表,如果anagram
返回True
,则我们保留该字,最后" ".join
输出所有单词列表作为单个字符串。
答案 2 :(得分:-1)
def anagram(my_str,my_list):
result_list = []
for item in my_list:
if item == my_str:
result_list.append(item)
return result_list
然后你必须分配变量并将它们传递给你的函数
somestr = 's'
somelist = ['s','not s','m','etc','s']
my_anagram = anagram(somestr,somelist)
因此,您将获得包含匹配元素列表的变量my_anagram