2016-10-09 15 views
1

プログラム内の2つのリストを比較して、一致する文字列があるかどうかを調べる必要があります。それらの1つは私が既にインポートしたtxtドキュメントです。私は2つのリストを比較する(Python)

def compareLists(self, listA, listB): 
    sameWords = list() 

    for a in xrange(0,len(listA)): 
     for b in xrange(0,len(listB)): 
      if listA[a] == listB[b]: 
       sameWords.append(listA[a]) 
       pass 
      pass 
     pass 
    return sameWords 

何をしたか厥しかし、私はプログラムを実行する場合、私は1が存在しなければならないことを知っているが、それはどんな試合を示しdoesntの。私はifブロックのどこかにあると思う。

+0

デバッガを試しましたか? listAまたはlistBのどの値が各反復ステップにあるかを簡単に観察できます。 – Rockbar

+0

設定されている交差操作を見ています。 –

+5

'list(set(listA)&set(listB))'は、ここに示すようにあなたが望むものを正確に返します(http://stackoverflow.com/questions/642763/python-intersection-of-two-lists) 。 – Efferalgan

答えて

1

あなたのコードでインデントが正しいと仮定しています。あなたの戦略を続けて、このコードは動作するはずです。

def compareLists(self, listA, listB): 
    sameWords = list() 

    for a in xrange(0,len(listA)): 
     for b in xrange(0,len(listB)): 
      if listA[a] == listB[b]: 
       sameWords.append(listA[a]) 
    return sameWords 

また、@Efferalganが示唆しているように、単に設定交差点を実行してください。

def compareLists(self, listA, listB): 
    return list(set(listA) & set(listB)) 

注:積集合は、あなたの結果から重複マッチングワードを削除します。

あなたが言ったように、あなたはテキストファイルから行を読み込んでおり、そこに改行が残っているように見えます。

my_text_list = [s for s in open("my_text.txt").read().rsplit()] 
+0

まだ動作していません。私はかなり.txtファイルのため、私はかなり確信していますが、私はそれを正しくインポートしたので、私はリストとしてそれを印刷することができます。ファイルが大きすぎる可能性はありますか?それは約15,000行を持っています –

+0

リストのサイズは重要ではありません、それは*大きな*ではありません。リストを印刷し、その中の言葉があなたが期待しているものであることを目視で確認します。 – Efferalgan

+0

15,000行が問題ありません。あなたが印刷したリストの一部を投稿できますか? –

関連する問題