a
演算子の左側に指定すると、 =
Python の通常の割り当てが使用され、現在のコンテキスト内の名前a
が新しい値を指すように変更されます。これは、a
指していた以前の値を変更しません。
a[0:2]
演算子の左側に指定することで、スライス代入=
を使用することを Python に伝えます。スライス割り当ては、リストのコンテンツを挿入、削除、または置換できるリストの特別な構文です。
挿入:
>>> a = [1, 2, 3]
>>> a[0:0] = [-3, -2, -1, 0]
>>> a
[-3, -2, -1, 0, 1, 2, 3]
削除:
>>> a
[-3, -2, -1, 0, 1, 2, 3]
>>> a[2:4] = []
>>> a
[-3, -2, 1, 2, 3]
交換:
>>> a
[-3, -2, 1, 2, 3]
>>> a[:] = [1, 2, 3]
>>> a
[1, 2, 3]
ノート:
スライスの長さは、割り当てられたシーケンスの長さとは異なる場合があり、ターゲット シーケンスで許可されている場合は、ターゲット シーケンスの長さが変更されます。-ソース
スライスの割り当ては、タプルのアンパックと同様の機能を提供します。たとえば、a[0:1] = [4, 5]
次と同等です。
# Tuple Unpacking
a[0], a[1] = [4, 5]
タプルのアンパックを使用すると、連続していないリストを変更できます。
>>> a
[4, 5, 3]
>>> a[-1], a[0] = [7, 3]
>>> a
[3, 5, 7]
ただし、要素を挿入または削除できないため、タプルのアンパックは置換に限定されます。
これらすべての操作の前後a
は、まったく同じリストです。Python は、リストをその場で変更するための優れた構文糖衣を提供するだけです。