私のコードでは:
_>> s = 'abacaba'
>> s.count('aba')
>> 2
_
上記のコードでは、文字列s
で 'aba'が2回発生するため、正しい答えが得られます。
ただし、次の場合:
_>> s = 'www'
>> s.count('ww')
>> 1
_
この場合、s.count('ww')
が_2
_を返すことを期待しています。ただし、_1
_を返します。
どうして?
docs を読んでください:
文字列
s[start:end]
のサブストリングsubの(non-overlapping)出現回数を返します。負の値の開始と終了および解釈のデフォルトは、スライスの場合と同じです。
「ww」は最初に一致するため、3番目の「w」から先に進み、「ww」との一致に失敗します。
string.count(s, sub[, start[, end]])
:文字列s [start:end]の部分文字列subの(重複しない)の出現回数を返します。負の値の開始と終了および解釈のデフォルトは、スライスの場合と同じです。
次のように考えてみてください。
この単語では、「アバカバ」、いくつの非重複「アバ」という単語が表示されますか? 2が表示されます。「c」も表示されます。
この言葉で:「www」はいくつ重複しない「ww」という言葉が表示されますか? 1が表示されます。「w」も表示されます。
より良い説明については、表示されたときにインスタンスを削除していると考えてください。
「abacaba」の場合、「aba」が表示されて削除されます。 「caba」があり、再び「aba」が表示されて削除されます。現在、「c」のみが取得されます。 「aba」が2回表示されます。 「www」についても同じです。「ww」が表示されたら削除します。現在、「w」のみが表示されます。 「ww」は一度だけ見ました。
それは理にかなっている。