なぜ''
はすべての文字列の部分文字列ですか?文字列インデックス0のあいまいさ
>>> string = 'string'
>>> '' in string
True
なぜインデックスであるのですか0
?
>>> string.index('')
0
なぜインデックス0
があいまいですか?
>>> string.index('s')
0
>>> string[string.index('')]
's'
なぜ''
はすべての文字列の部分文字列ですか?文字列インデックス0のあいまいさ
>>> string = 'string'
>>> '' in string
True
なぜインデックスであるのですか0
?
>>> string.index('')
0
なぜインデックス0
があいまいですか?
>>> string.index('s')
0
>>> string[string.index('')]
's'
>>> string = 'string'
>>> string[0:0] == ''
True
>>> string.index('str')
0
>>> string[string.index('str')] == 'str'
False
documentationはstring.index(sub)
がサブストリングの最初の発生を返すことを言うていますstring.index('')
は、他のインデックスや特別な戻り値ではなく、0
を返します。
string.index(部分文字列)は、部分文字列が始まるインデックス位置を返します。元の文字列の一部でない場合は-1を返します。
空の文字列はすべての文字列のサブセットです。つまり、すべての文字列は空の文字列で始まり、string.index( '')は文字列の最初のインデックスである0を返します。
列[指数]は空の文字列の開始インデックスによって返され、この場合0で、インデックス位置の文字を返し
しかし、なぜそれが '0'ですか?存在しない場合には '-1'のようなカスタムの' empty substring'フラグを返した方が正確でしょうか? – SvbZ3r0
これは、index()メソッドのパラメータが元の文字の部分文字列でない場合のフラグです。 –
空のセットがすべてのセットのサブセットであるのと同じ理由からです。 –
リスト(文字列) '' False'の '[]はなぜですか?結局 '[]'は空のセットです。 – SvbZ3r0
@ SvbZ3r0: 'in'は文字列とは違って動作します。他のすべてのコンテナ型では、 'x in ctr'は' x'が 'ctr'の要素であるかどうかをテストし、 'x in a_string'は' x'が 'a_string'の部分文字列であるかどうかをテストします。 – jwodder