次のコードを見て、str.count('')
メソッドとlen(str)
関数が2つの異なる出力を与える理由を説明してください。str.count( '')とlen(str)の出力が異なるのはなぜですか?
a=''
print(len(a))
print(a.count(''))
出力:
0
1
次のコードを見て、str.count('')
メソッドとlen(str)
関数が2つの異なる出力を与える理由を説明してください。str.count( '')とlen(str)の出力が異なるのはなぜですか?
a=''
print(len(a))
print(a.count(''))
出力:
0
1
str.count()
カウントストリングの非重複出現:
戻るサブサブの非重複出現数。
文字列''
に部分文字列''
がある場所があります。したがって、カウントは return 1
になります。
>>> (' ' * 100).count('')
101
空の文字列ためです:カウントは常に長さプラス1でなければなりませんので、一般的に言って、空の文字列は、で開始と終了時権利を含むすべての位置指定した文字列でを、一致します文字列のすべての文字の間に存在するとみなされます。したがって、ストリング長2の場合、3つの空のストリングがあります。 1つは開始時に、もう1つは2つの文字の間に、もう1つは最後に
はい、結果は異なり、完全に正しいです。
「正確にそのような場所が1つあります部分文字列 ''は文字列 '':開始時に右に現れます。それを置くための正しい方法です。 CPythonは 'len(substr)== 0'と' len(str)+ 1'を返す特別なケースです(https://github.com/python/cpython/blob/master/Objects/stringlib/count .h#L16) –
@ JimFasarakis-Hilliard:あなたが私の答えを完全に読んでいるかどうかはわかりませんが、コードが何をしているのか正確に言っています。 –
空の文字列を渡したときに 'count()'が返すべきことは、私には明らかに分かりません。大会の問題をどのように数えるかは問題であり、このケースでは単に「ValueError」を投げるのが合理的だと思います。 「重複しない」とは、2つのオカレンスの共通部分が空の文字列であることを意味します。したがって、空の文字列がインデックス0に2回出現する場合、実際には重複しません。 –
なぜ*同じ出力を与えるべきですか?空の文字列に空の文字列が1つあります。空の文字列の長さは0です。 –
なぜ、a = '' <---(ここで私は2つのスペースを与えました)は2の長さの3つの空の文字列を与えていますか?返信いただきありがとうございます@MartijnPieters – liberal
開始と最初のスペースの間に空の文字列があるため、最初のスペースと2番目のスペースの間にもう1つ、最後のスペースと最後のスペースの間に1つの最後のスペースがあります。 –