私は、検索したいサブストリングの長いリストを持っています。次のコードは、私が始めたものである:リスト内で最も多く見られるサブストリングを見つける
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が手動で置き換えられており、プリントがエラーを追跡することに注意してください。
['1'、 '1'、 '1'、 '2'、 '2'、 '3'、 '3']のリストがあるとします。理解が難しい –
@ MarkoMackicこの特定のアプリケーションでは、フォームは1秒と0秒です。 – paperstsoap