8

定義されたリストの外にあるインデックスにアクセスできないことを理解してsomelist[len(somelist)]います-これは理にかなっています。

しかし、なぜPythonでできるのでしょうsomelist[len(somelist):]か。

私も読んだことがありますそれsomelist[len(somelist):] = [1]は同等ですsomelist.append(1)

しかし、スライス表記によって、インデックス「len(somelist)」がまだリストの範囲外にあるという事実が変わるのはなぜですか?

4

3 に答える 3

4

これがドキュメントからの何かです。反復可能なもののスライスには特定のルールがあります。特に注目すべきは#4、強調私のものです:

sfromからitoのスライスは、のようなjインデックスを持つアイテムのシーケンスとして定義されます。またはがより大きい場合は、を使用します 。省略またはの場合は、を使用してください。省略またはの場合は、を使用して ください。が以上の場合、スライスは空です。ki <= k < jijlen(s)len(s)iNone0jNonelen(s)ij

于 2013-03-18T05:42:25.200 に答える
1

インデックスには何もありませんlen(somelist)(Python ではリスト インデックスは 0 から始まります)。したがって、存在しない要素にアクセスしようとすると、エラーが発生します。

ただし、リストのスライス (myList[i:]構文を使用) は、 と の後の要素を含む新しいリストを返しますi。インデックス (またはそれ以降) のリストには要素がないためi、空のリストが返されます。

于 2013-03-18T05:37:33.980 に答える
1

Python ドキュメントから:

縮退したスライス インデックスは適切に処理されます。大きすぎるインデックスは文字列サイズに置き換えられ、下限よりも小さい上限は空の文字列を返します。

したがって、 index > list size は自動的に修正されsomelist[len(somelist):]、最後の要素の後の要素、つまりnadaを返します。

于 2013-03-18T05:40:54.983 に答える