[解決済み] スライス表記を理解する
質問
Pythonのスライス表記について、良い説明(参考文献があれば尚可)が欲しいです。
私にとって、この記法は少しピックアップする必要があります。
非常に強力に見えるのですが、いまいちピンときていません。
どのように解決するのか?
とても簡単なことなんです。
a[start:stop] # items start through stop-1
a[start:] # items start through the rest of the array
a[:stop] # items from the beginning through stop-1
a[:] # a copy of the whole array
また
step
の値で、上記のいずれにも使用できます。
a[start:stop:step] # start through not past stop, by step
重要なポイントは
:stop
という最初の値を表します。
ではない
を選択したスライスの そのため
stop
と
start
は選択された要素の数です(もし
step
は1、デフォルト)。
もう一つの特徴は
start
または
stop
は
ネガティブ
これは、配列の先頭ではなく末尾からカウントすることを意味します。つまり
a[-1] # last item in the array
a[-2:] # last two items in the array
a[:-2] # everything except the last two items
同様に
step
は負の数であってもよい。
a[::-1] # all items in the array, reversed
a[1::-1] # the first two items, reversed
a[:-3:-1] # the last two items, reversed
a[-3::-1] # everything except the last two items, reversed
Pythonは、要求した数よりも少ない数の項目があれば、プログラマに親切です。例えば、もしあなたが
a[:-2]
と
a
が1つの要素しか含んでいない場合、エラーの代わりに空のリストが表示されます。エラーの方がいい場合もあるので、このようなことが起こる可能性があることを認識しておく必要があります。
との関係
slice()
オブジェクト
スライス演算子
[]
は、実際には上記のコードに
slice()
オブジェクトを使用しています。
:
の中でしか有効ではありません。
[]
)、すなわち
a[start:stop:step]
とは等価である。
a[slice(start, stop, step)]
スライスオブジェクトも引数の数によって挙動が若干異なりますが、同様に
range()
つまり
slice(stop)
と
slice(start, stop[, step])
がサポートされています。
引数の指定を省略したい場合は,以下のようにします。
None
というように、例えば
a[start:]
と同じです。
a[slice(start, None)]
または
a[::-1]
と同じです。
a[slice(None, None, -1)]
.
一方
:
-ベースの記法は単純なスライスに非常に便利ですが、明示的に
slice()
オブジェクトを使用することで、プログラムによるスライスの生成を簡略化することができます。
関連
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み】itertools.groupby()を使うにはどうしたらいいですか?)
-
[解決済み] Pythonでsyslogへのロギングを設定する方法は?
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] Javascriptで文字列の最後の文字を切り取るにはどうしたらいいですか?
-
[解決済み] 2次元アレイにおけるピーク検出
-
[解決済み] JavaScriptで配列を複製する最速の方法 - スライス vs. 'for'ループ
-
[解決済み] スライスのメソッドを含む
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
opencvとpillowを用いた顔認証システム(デモあり)
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] pythonの[:]の意味【重複】について
-
[解決済み] Pythonで「int(a[::-1])」の意味を教えてください。[重複しています]。
-
[解決済み] Pythonのリストインデックスにコロン(:)がある [重複] [重複
-
[解決済み] Pythonです。for x in A[1:]はどういう意味ですか?[重複あり]
-
[解決済み] ネガティブリストのインデックス?[重複あり]