リスト型、タプル型2
アンパック代入
スライスを使った代入に似た機能としてアンパック代入があります。
イコールの左右に複数の要素を記入して、一度に複数の要素に対して代入を行う機能です。
アンパック代入では、イコールの左右で要素数が揃っていないとエラーになるので注意が必要です。
アンパック代入を使うと、次のように一発で変数の入れ替え(Swap)を実行できます。
変数などを使って要素を保存しておく必要がありません。
【アンパック代入を使う】
a = 1
b = 2
b, a = a, b
print(a, b)
↓
2 1
※Pythonでは、複数の要素をカンマで区切って列挙すると、タプルとして扱われます。
この記法を使うと、丸括弧を使わずにタプルを作ることができます。
アンパック代入では、タプルの要素として含まれた変数を対象に、代入を行っていることになります。
スライスのステップ数
スライスに与えるコロン(:)で区切ったパラメータは、実は、3つ与えることができます。
3つ目の数値はステップとして扱われます。
スライスで「n個とばしながら要素を取り出す」という指定ができます。
【リストからスライスで要素を取り出す】
a = [1, 2,3 ,4, 5]
a
↓
[1, 2, 3, 4, 5]
a[1:4]
↓
[2, 3, 4]
a[2:100]
↓
[3, 4, 5]
a[::2]
↓
[1, 3, 5]
※リストから偶数番目の要素を取り出す
スライスを使った要素の代入と削除
スライスと代入を組み合わせると、リストの複数の要素を一括して置き換えることができます。
置き換えを行いたい要素をスライスで指定し、イコールの左に置きます。
置き換えたい要素をイコールの右側に置きます。
右側の要素は、リストやタプルなどのシーケンスである必要があります。
【要素の追加】
a = [1, 2, 3, 4, 5]
a[2:4] = [’Three’, ‘Four’, ‘Five’]
a
↓
[1, 2, ’Three’, ‘Four’, ‘Five’, 5]
イコールの左側では、(0から数えて)2番目と3番目の要素をスライスで指定しています。
右側の要素では、3つの文字列を持ったリストを指定しています。
左右で要素の数が異なる場合でも、自動的に整合性を保つように処理をしてくれます。
del文とスライスを組み合わせると、複数の要素をいっぺんに削除することができます。
【要素の削除】
a = [1, 2, 3, 4, 5]
del a[2:]
a
↓
[1, 2]
※2行目の「del a[2:]」で3番目から最後まで削除する