from collections import Counter
import re
def find_anagrams(a):
A=set((a))
B=str(A)
C=sorted((A))
D=range(0,len(C))
for i in D:
if Counter(C[i]) == Counter(C[i+1]):
print((C[i]),C[i+1])
return 'These are anagrams'
我试图创建一个检查anagram的代码,但我无法弄清楚如何在获得第一次正确匹配后进行迭代器循环。我尝试使用continue
,但似乎没有用。我觉得这是一个简单的修复,但我在过去的一个小时里一直在研究它,似乎无法解决这个问题。
答案 0 :(得分:1)
如果我理解正确并且你的函数将字符串列表作为参数,你可以通过这个函数找到字谜:
from collections import Counter
def find_anagrams(words):
for i in range(len(words)):
for j in range(i + 1, len(words)):
if (Counter(words[i]) == Counter(words[j]) and
words[i] != words[j]):
print('Anagrams:', words[i], words[j])
它将检查列表中每个其他单词的每个单词,不包括相同的单词。
它将使用以下参数生成以下输出:
words = ['aab', 'baa', 'abc', 'cba', 'abcd', 'abbd', 'aba']
find_anagrams(words)
>>> Anagrams: aab baa
>>> Anagrams: aab aba
>>> Anagrams: baa aba
>>> Anagrams: abc cba