私は検索したいサブストリングの大きなリストを持っており、2つの特定のサブストリングが連続して見つかるかどうかを調べます。論理は最初のシーケンスを探し、それが見つかった場合は2番目のサブストリングを調べ、すべての一致を返します(16文字シーケンスの最初の15文字に基づいています)。最初のシーケンスが見つからない場合は、2番目のシーケンスのみを検索し、最後に見つからなければゼロになります。マッチはリストに追加され、さらに処理されます。次のように使用される現在のコードは次のとおりです。サブストリングのリストの検索は、一度に複数の条件を返します
dataA = ['0100101010001000',
'1001010100010001',
'0010101000100010',
'0101010001000110',
'1010100010001110',
'0101000100011100',
'1010001000111010',
'0100010001110100',
'1000100011101000',
'0001000111010000']
A_vein_1 = [0,1,0,0,1,0,1,0,1,0,0,0,1,0,0,0]
joined_A_Search_1 = ''.join(map(str,A_vein_1))
print 'search 1', joined_A_Search_1
A_vein_2 = [1,0,0,1,0,1,0,1,0,0,0,1,0,0,0]
joined_A_Search_2 = ''.join(map(str,A_vein_2))
match_A = [] #empty list to append closest match to
#Match search algorithm
for i,text in enumerate(data):
if joined_A_Search_1 == text:
if joined_A_Search_2 == data[i+1][:-1]:
print 'logic stream 1'
match_A.append(data[i+1][-1])
if joined_A_Search_1 != text:
if joined_A_Search_2 == text[:-1]:
print 'logic stream 2'
#print 'match', text[:-1]
match_A.append(text[-1])
print ' A matches', match_A
try:
filter_A = max(set(match_A), key=match_A.count)
except:
filter_A = 0
print 'no match A'
filter_A = int(filter_A)
print '0utput', filter_A
問題は、このケースでは、私は実際にそれが厳格どちらか一方になりたいときに私は、ロジック・ストリーム1と論理ストリーム2の両方のリターンを得ることです唯一の論理ストリーム1は、出力の例は次のようになります。リストが短縮されており、データ入力を直接に置換された、同様の目的のためにプリントアウト:
search 1 0100101010001000
search 2 100101010001000
logic stream 1
logic stream 2
logic stream 1
logic stream 2
logic stream 2
(注この投稿とエラートラッキング)
このコードの目的は、その不足している最後の数字は、第二の配列(一番下に、したがって最大カウントコード)のためにあるものを見つけることです。両方の論理ストリームがリストfilter_Aに寄与すると、精度は失われる。それが厳密に1つのケースまたは他のものを必要とする理由である。私はそれが必要な論理のORゲートタイプと考えることができると思います。 – paperstsoap