2016-10-04 9 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

関連する問題