2016-10-04 29 views
0

我之前看到過一個關於如何從字符串列表中查找特定單詞的問題。它被刪除,我想因爲我找不到它了。如何在Python中分解這個列表理解?

因此,例如:

>>>findTheLetters(["hello", "world"], "hold") 
>>>True 
>>>findTheLetters(["hello", "world"], "holn") 
>>>False (because of no "n") 

所以,我看到一個帖子有人在這裏說,使用列表理解像這樣:

return all((any(letter in word for word in myList)) for letter in myString) 

我的問題是,我將如何打破這列表理解,所以我可以理解它是如何工作的?我用了簡單的(新手)列表理解,但沒有那樣。

我嘗試:

def findTheLetters(myList, myString): 
    for word in myList: 
     for letter in word: 
      #something goes here? 
     return letter in myString 

這是我已經得到最遠。它有時像「主」和「持有」一樣工作,但就像我嘗試「地獄」或「禍」一樣,即使字符「h」「e」「l」「l」和「 w「」o「」e「在單詞列表中。我不確定我需要添加什麼來使其像理解那樣工作。

+0

大概可以使用這個答案,除非你關心的字母數,http://stackoverflow.com/questions/9443302/search-strings-in-list-containing-specific-letters-隨機順序 –

回答

2

這裏有一個小的教育例子告訴你什麼是該算法是做幕後:

def findTheLetters(myList, myString): 
    return all((any(letter in word for word in myList)) for letter in myString) 


def findTheLetters1(myList, myString): 
    res1 = [] 
    for letter in myString: 
     res2 = [] 
     for word in myList: 
      res2.append(letter in word) 

     print(letter, res2, any(res2)) 

     res1.append(any(res2)) 

    print('-' * 80) 
    print(res1, all(res1)) 
    print('-' * 80) 
    return all(res1) 

findTheLetters1(["hello", "world"], "hold") 
findTheLetters1(["hello", "world"], "holn") 

輸出:

h [True, False] True 
o [True, True] True 
l [True, True] True 
d [False, True] True 
-------------------------------------------------------------------------------- 
[True, True, True, True] True 
-------------------------------------------------------------------------------- 
h [True, False] True 
o [True, True] True 
l [True, True] True 
n [False, False] False 
-------------------------------------------------------------------------------- 
[True, True, True, False] False 
-------------------------------------------------------------------------------- 

我建議你學習&閱讀任何/所有運算符以及嵌套的理解列表來了解執行順序。

希望它可以幫助

+0

這相信會讓你更有意義。所以理解是在for循環(mystring中的字母)中使用表達式(單詞中的字母),然後是for循環(myList中的單詞)?我當然會在嵌套的理解列表上進行閱讀。我只是困惑於列表理解本身在解構時如何工作。謝謝。 :) – Wiggs

+0

@BPL如果我可能會問,res1 = []和res2 = []做什麼?他們是佔位符來檢查角色嗎? – Wiggs

+0

@Wiggs他們是[列表](https://docs.python.org/2/tutorial/datastructures.html#more-on-lists),打開交互式會話並嘗試'res1 = []',然後只是'鍵入(res1)'或'res1 .__ class__'。無論如何,我建議你通過python教程來熟悉python的基本塊;-) – BPL