一つは反復可能で値のサブセットを取得する配列スライス表記を使用することができます。Python:なぜ[0,1,2] [ - 1:1]はエラーを発生させませんか? Pythonで
a = [0,1,2]
a[0:2]
# returns all members from the 0th to the 2nd: [0,1]
最初の値が負のスライスを抽出しようとすると、第2の値が正の場合、しかし、リクエストは空のリストを返します。
a[-1:2]
# returns []
これは私には直感に反する、-1で定義された範囲として:2:2 0で定義された範囲のスーパーセットのようです。
私は、Pythonのスライス表記法(例:a[-1]
が2)で配列の最後からpluckするために負のインデックスを使うことができますが、最初のスライス位置では負の値、エラーを発生させるか、同じスライスから返された値のスーパーセットを最初の0の位置に戻します。
私は誰もが、この前面に洞察力を持っているために起こる場合は、2番目に正の値と第一の位置に負の値でスライス要求によって返された空のリストの背後にある動機を知りたいだろう...
'a [-1:2]'は 'a [len(a)-1:2]となります。 – Kos
私はそれを聞いています。しかし、最初の位置で負の値を持つスライスによって返された値が常に空の場合、言語でエラーが発生しないのはなぜですか?スライス関数の最初の位置に負の値が正当なユースケースではないようですので、この状況が発生した場合、開発者に警告する必要があるようです。 – duhaime
@Kos私は、 'a [-1:2]'は、問題なしで-7をそこに置くことができるので、 'a [-1%len(a):2] 'と読みます。 – Nullman