2014-11-14 74 views
-1

我想定义一个函数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( “鼠”, “[艺术,焦油,GAR,松鸦]”)

01输出的

'art' 'tar'

因为它们是大鼠的变位。

+0

所以你对'str_list'中的每个'str'都做'anagram(str1,str)' – Ben 2014-11-14 23:40:15

+0

你知道如何在Python中编写任何类型的循环结构吗?如果没有,请参阅['for'语句](https://docs.python.org/3/tutorial/controlflow.html#for-statements)或[List Comprehensions](https://docs.python)。组织/ 3 /教程/ datastructures.html#列表内涵)。 – abarnert 2014-11-14 23:43:59

+0

@abarnert是的我在 – alfiej12 2014-11-14 23:45:24

回答

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)检查该字,最后" ".join将列表中的所有单词输出为单个字符串。

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 
+0

为什么不只是'返回str1 == str2'? – 2014-11-15 00:31:52

+0

你说得对。但我试图保持他的代码类似,所以他知道问题出在哪里。 – aaveg 2014-11-15 09:05:04

+0

问题不是第一个代码,我不得不以某种方式将它放入get_anagram_word_list(str,strlist)来查找列表中的单词是否是str的字形,我已经进一步了解了上面的代码,但它仍然不是那里@padraiccunningham – alfiej12 2014-11-15 23:07:37

-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其中包含匹配的元素列表中的每个或反对通过了STR1,如果anagram回报True然后我们保持列表

相关问题