レッスン2 / 3問目

『イミュータブル』

Lesson1

コード入力エリアにタプルがあります。このタプルaを昇順に並び替えて、変数bに代入してください。

Lesson2

for文を用いてbの要素を全て出力してください。


for 変数 in b: 実行する処理

Last updated:2020/2/27

1
2
4
5
7
  1. a = (5, 2, 4, 7, 1)

  2. #aを昇順に並び替えて新たなタプルbに代入してください。

  3. b = sorted(a)

  4. # for文を用いてb値を出力してください。

  5. for i in b:
  6. print(i)
main.py
設定
g
n
i
d
a
o
L

                 
        

    
            

Leagence Programming

イミュータブルとは

前回のレッスンでは、タプルは「作成した後に要素に変更を加えることができない」という特徴があることを説明をしました。

このように要素に変更を加えることができない性質をイミュータブルと呼びます。反対に、要素に変更を加えることができる性質はミュータブルと呼びます。

ちなみにこれまで学習した文字列もイミュータブルに該当します。

イミュータブルとミュータブル

下記表はそれぞれの型がイミュータブルかミュータブルかをまとめたものです。

説明
文字列イミュータブル(変更不可)
整数イミュータブル(変更不可)
タプルイミュータブル(変更不可)
リストミュータブル(変更可能)

イミュータブルの性質

タプルはイミュータブルであり要素に変更を加えることはできません。

しかし、既存のタプルに変更を加えた新たなタプルを生成することはできます。 以下はタプルaをソートし、新たにリストbを生成しています。

  1. a = (1, 2, 3, 4, 5)
  2. b = sorted(a, reverse=True)     # タプルaの要素をソートしbに代入
  3. print(b)
[5, 4, 3, 2, 1]     # 変数に再代入することで変更を加えることができる

要素に直接変更を加える例

ではミュータブル(変更可能)についても見ていきます。
以下ではリストaを直接ソートしています。

  1. a = [1, 2, 3, 4, 5]
  2. a.sort(reverse=True)    # aを直接ソート
  3. print(a)    # リストaを出力
[5, 4, 3, 2, 1]

ポイントは、イミュータブル(変更不可)の場合は再代入をすることで要素を変更しましたが、ミュータブル(変更可能)では要素に直接変更を加えている点です。

まとめ

このように、「要素に変更を加えた新たなタプルを生成すること」と「要素に直接変更を加えること」の違いを意識することは今後プログラミングを学習していく上で重要となります。

ではこのレッスンの内容をまとめます。

  • 後から変更不可な性質をイミュータブルと呼ぶ
  • 後から変更可能な性質をミュータブルと呼ぶ
  • イミュータブルは変更を加えた新たなオブジェクトを作成することであれば可能