Exercism: Anagram (Python)
在一组词中查找变位词。想了两个方法1)是中规中矩变小写,排序对比,2)是生成全部的排列组合存在set里,然后用一个循环直接来查。写了第一种,比较简单。 def find_anagrams(word, candidates): results = [] convert_word = lambda x: "".join(sorted(x.lower())) sorted_word = convert_word(word) for c in candidates: if len(c) != len(word): continue if sorted_word == convert_word(c) and word.lower() != c.lower(): results.append(c) return results 看了几个别人的答案,大同小异。有些用列表解析写成一行。但是感觉有点难读,而且加上一个长度的check, 性能会更好些。 return [w for w in candidates if word_sorted == sorted(w.lower()) and not w.lower() == word.lower()]