2016-07-24 8 views
0

私は、検索したいサブストリングの長いリストを持っています。次のコードは、私が始めたものである:リスト内で最も多く見られるサブストリングを見つける

dataA = ['0000000001001000', 
'0000000010010001', 
'0000000100100011', 
'0000001001000100', 
'0000010010001010', 
'0000100100010100', 
'0001001000101011', 
'0010010001010110'] 
A_vein_1 = [0,0,0,0,1,0,0,1,0,0,0,1,0,1,0,0] 
joined_A_Search_1 = ''.join(map(str,A_vein_1)) 
print 'search 1', joined_A_Search_1 
A_vein_2 = [0,0,0,1,0,0,1,0,0,0,1,0,1,0,1] 
joined_A_Search_2 = ''.join(map(str,A_vein_2)) 
print 'search 2', joined_A_Search_2 
match_A = [] #empty list to append closest match to 
#Match search algorithm 
for text in dataA: 
    if joined_A_Search_1 == text: 
     if joined_A_Search_2 == dataA[text+1[:-1]]: 
     print 'logic stream 1' 
     match_A.append(dataA[text+1[-1]])  
if joined_A_Search_2 == text[:-1]: 
    print 'logic stream 2' 
    #print 'match', text[:-1] 
    match_A.append(text[-1]) 
print 'matches', match_A 
try: 
    filter_A = max(set(match_A), key=match_A.count) #finds most frequent 
except: 
    filter_A = 0 #defaults 0 
    print 'no match A' 
filter_A = int(filter_A) 
print '0utput', filter_A 

A_vein_1が16個の文字であることに注意することが重要であり、A_vein_2はわずか15チャーターの長さであるため、検索のためのresaon。私はとのトラブルを抱えていますラインは次のとおりです。

if joined_A_Search_2 == dataA[text+1[:-1]]: 

私が何をしたいのか、それが存在する場合、A_vein_1を探し、最初の15のチャーターA_vein_2と一致するかどうかを確認するためにその下に次のシーケンスを見て、あればありますそうでない場合はリストに追加し、A_vein_2のみを検索します。それが見つからない場合は、デフォルトでゼロになります。私は正しいアイデアを持っていると信じていますが、このif文を使った構文が間違っています。私は過去数ヶ月の間Pythonを学んできましたので、私はまだ十分に堪能ではありません。 DataAが短縮され、このポストの目的のためにA_veinsが手動で置き換えられており、プリントがエラーを追跡することに注意してください。

+0

['1'、 '1'、 '1'、 '2'、 '2'、 '3'、 '3']のリストがあるとします。理解が難しい –

+0

@ MarkoMackicこの特定のアプリケーションでは、フォームは1秒と0秒です。 – paperstsoap

答えて

0

あなたが望むのは次のようなものだと思います。あなたが最初の検索との試合の後に次の項目をチェックしたいと思うように思えます。

for i,text in enumerate(dataA): 
    if joined_A_Search_1 == text: 
     if joined_A_Search_2 == dataA[i+1][:-1]: 
      print 'logic stream 1' 
      match_A.append(dataA[i+1][-1])  

enumerate戻っあなたがそうあなたがdataA[i+1]を行うことができ、次の項目をチェックするために、反復処理しているかの指標とコンテンツの両方。 data[i+1]は定義されていないため、最後の項目と一致する最初の検索の条件を処理する必要がありますが、これで目的が達成されるはずです。

+0

これは私がやろうとしていることをしているようです。私は今より大きなリストの異なるシーケンスをテストしています。お手伝いありがとう! – paperstsoap

+0

これは私が達成したいことを正確に実行します。次回は、私はバックポケットに列挙していきます。再度、感謝します。 – paperstsoap