2

さて、私はUdacityコースを受講していて、Python文字列操作でこの特定の癖を理解しようとして立ち往生しています。

このシナリオを考えると、

 1     x = ''    
 2     print x[0]

空の文字列に0番目の位置がないため、2行目で「インデックスが範囲外です」というエラーが発生します。

しかし、このシナリオでは、

 1     x = ''    
 2     print x[0:]

インデックス作成エラーはまったくありません。なんでこれ?サブシーケンス演算子が、あるように見えるはずのインデックス付けエラーをバイパスできるのはどうしてですか?

よろしくお願いします!


はっきりしなかった場合のために、ここに私が話している問題の80秒の解決策へのリンクがあります(私の現在の質問に対する十分な説明はありません)。

4

1 に答える 1

2

x[0]単一の要素を返すことが期待されますが、これはNone。(たとえば[None][0] == None)では、インデックス0に何もない場合、何を返すことができますか?何も返すことはできません。実際にそのインデックスにNoneあるとあいまいになるため、返すことさえできません。None例外を発生させる必要があります。

x[0:]一方、0個以上の要素を含むリストを返すため、空のリストを返すことで「何も見つかりませんでした」を返すことができます。(これx[0:]は、呼び出しx[0] x[1]などでは実装されませんが、基になる異なるコードを使用することに注意してください。)

于 2013-03-26T01:56:08.433 に答える