【发布时间】:2021-07-11 14:25:24
【问题描述】:
编写一个函数,从一个列表中找出一个单词的所有字谜。您将获得两个输入,一个单词和一个包含单词的数组。
您好,可以向我解释一下这 2 个功能有何不同吗?一个只返回 for 循环找到的第一个值......为什么会这样?
def anagrams(word, words):
for item in words:
if sorted(item) == sorted(word):
return [item]
def anagram(word, words):
return [item for item in words if sorted(item) == sorted(word)]
print(anagrams('racer', ['crazer', 'carer', 'racar', 'caers', 'racer']))
print(anagram('racer', ['crazer', 'carer', 'racar', 'caers', 'racer']))
['照顾者']
['照顾者','赛车手']
【问题讨论】:
-
return导致函数退出。你会使用yield来做你想做的事情;尽管这是该语言的一项更高级的功能。 -
如果你想得到相同的结果(多个匹配的词)并保持相似的
for-loop,那么你需要添加一个result (list)来保持所有匹配的字谜。