私はPythonのスライスを扱っていますが、私は予期しない結果に遭遇しました。このスライス動作は定義されていますか?
例:
print([1, 2, 3][0:-4:-1])
戻り[1]
print([1, 2, 3][0:-3:-1])
print([1, 2, 3][0:-2:-1])
print([1, 2, 3][0:-1:-1])
これら戻り[]
(予想通り)のそれぞれ。
どうしますか?
ありがとう、Reyha24。
私はPythonのスライスを扱っていますが、私は予期しない結果に遭遇しました。このスライス動作は定義されていますか?
例:
print([1, 2, 3][0:-4:-1])
戻り[1]
print([1, 2, 3][0:-3:-1])
print([1, 2, 3][0:-2:-1])
print([1, 2, 3][0:-1:-1])
これら戻り[]
(予想通り)のそれぞれ。
どうしますか?
ありがとう、Reyha24。
sliceには、最初の項目(開始)が含まれています。 2番目の引数(停止)はexである。 -3のストップが与えられると、1
から1
になることを意味します。停止は排他的であるため、唯一の項目は除外され、結果は空です。 -2を指定すると、インデックス1に変換されます。インデックス0が指定されるとすぐに、ステップが負であるため、インデックス1をすでに通過しています。したがって、結果は空です。 -1と似たようなものが得られます。ただし、最後から-4をとると、リストには3つの項目しかないので-1になります。負のステップで0から-1まで行くことができます。インデックス0が含まれ、インデックス-1は後でリストに表示されるためではありません。
スライスを元に戻して通常のインデックスに変換すると、これが明確になると思います。 Pythonは半開きの間隔を使用するため、[0:-4:-1]
は[1, 2, 3][-3:1]
に変換されます。この場合の-3
はインデックス0
に対応しているため、最初の要素である[1, 2, 3][0:1]
に変換されます。 2番目のケース[0:-3:-1]
は[-2:1]
に変換されます。これは[1:1]
です。これは空です。 3番目のケースは[2:1]
に変換されます。
良い答え!分かりました。良い一日を過ごしてください! – Reyha24
最初の例についてのみ質問していますか? – zondo
@zondo:はい。他のものは私には明らかです。 – Reyha24
これは定義された動作です。 '[1、2、3] [2:3]'と似ています。 – user2357112