【发布时间】:2014-11-14 23:38:14
【问题描述】:
我想定义一个函数 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 中的单词没有被附加到“字谜”
我想要这样的输出
find_anagrams_in_word_list("rat", "[art,tar,gar,jay]")
'艺术' '焦油'
因为它们是老鼠的字谜。
【问题讨论】:
-
所以你为
str_list中的每个str做anagram(str1, str) -
你知道如何在 Python 中编写任何类型的循环结构吗?如果没有,请参阅
forStatements 或List Comprehensions 上的教程。 -
@abarnert 是的,我之前已经为报表做过
-
@sc14sd:那么,你卡在哪里了?正如 Ben 所说,您想对列表中的每个值都做一些事情
for。当然最明显的就是打印True和False很多次,而不是返回一个字符串列表,所以你还必须让anagram返回一些有用的东西,并让你的find_anagrams_in_word_list做一些事情这些返回值,但首先尝试做显而易见的事情。 -
@sc14sd,您的函数不会返回 True 或 False,它只是打印。首先,您需要使其返回适当的值。然后在 for 循环中使用它并为循环中的每个项目调用 anagram(str1,str2)。将匹配项保存在新列表中并返回该列表。
标签: python string list function python-3.3