2016-12-23 3 views
0

リストBが大きなリストAに含まれているかどうかを確認する一般的なプログラムを作成しようとしていますが、これは私のプログラムでTrue場合。Pythonエラー - リスト

n = len(A) 
m = len(B) 

any(B == A[j:j+m-1] for j in range(n-m+1)) 

ご協力いただければ幸いです。

+0

私は、Python 3.5 – ForceBru

答えて

4

にスライスL[a:b]の長さを変更より1本A[j:j+m-1]戻りリスト短いはそれがPythonのスライス(排他最後の要素)の美しさ、b-aあります。

したがって、A[j:j+m-1]の長さはm-1なので、長さがmであるので、Bと同じにすることはできません。

+0

ああにこのコードの構文エラーが届かないが、簡単だったそれを得た - !おかげで今動作しますが、また、我々は範囲のためのn-M + 1を使用する必要がなぜ不思議?私は、最後に呼ばれた「j」がn-mであると言っているのでしょうか?これは、リストA [N-M:n]のチェックを意味= B最後の - Aの最後おそらく定義M長サブリストであるが[N-M-1:N-1]。しかし、この理論のバックプログラムエラーに私は1 – T132

+0

T132によって範囲を減少させた場合:mが1である場合、あなたはすべての可能な1文字の部分文字列を入力して試してくださいする必要があり、それは正確に文字列A [J:J]です範囲(n)からのjである。部分文字列が1より長い場合にのみ、あなたが見る必要がないことを知っているいくつかのインデックスがあります。 – RemcoGerlich

+0

おかげさまで、ありがとうございました! – T132

2

B.がA[j:j+m]