Yomiage
メニュー

Python実践講座 02:値・型・名前・変更可能性

更新 2026/9/27 6:22:11 公開

投稿者: しゅりりん

到達点は、代入と複製の違いを説明し、数値の型を選ぶことです。前提は第01回です。

名前はオブジェクトを指す

Pythonの変数は、オブジェクトへ名前を結び付けるものとして考えます。代入だけではリストは複製されません。int、str、tupleなどは変更不能、list、dict、setなどは変更可能です。ただしtupleの中に可変リストを入れると、そのリストの内容は変更できます。

次をmain.pyとして実行します。

from decimal import Decimal

original = [10, 20]
shared = original
copied = original.copy()
shared.append(30)
print(original)
print(copied)
print(7 / 2, 7 // 2, -7 // 2)
print(Decimal("0.1") + Decimal("0.2"))
missing = None
print(missing is None)
print([1, 2] == [1, 2])

元のリストは10・20・30、複製は10・20のままです。割り算は3.5、床除算は3、負の床除算は-4です。最後の比較は二つともTrueです。== は値の等しさ、is は同一のオブジェクトかを調べます。Noneの判定にはisを使います。

動的型付けにも型はある

同じ名前を整数から文字列へ付け替えられても、整数と文字列を無条件に足せるわけではありません。必要なら int("12") で変換し、変換できない場合を扱います。入力関数inputが返すのは文字列です。

intは通常の利用では固定32ビットの範囲に制限されませんが、巨大な値にはメモリと計算時間が必要です。floatは近似的な小数です。10進小数として扱う必要があるならDecimalを文字列から作り、丸めの規則を決めます。

リストのcopyは浅い複製です。入れ子のリストは共有される場合があります。[[0] * 3] * 2 は同じ内側のリストへの参照を繰り返すので、二行を独立に変更したい場合に不向きです。

練習と解答

練習:二行三列の独立した0の表を作り、左上だけ1にしてください。

解答例:grid = [[0 for _ in range(3)] for _ in range(2)] とし、grid[0][0] = 1 とします。結果は一行目だけが変わります。何を共有し、何を複製したいかを、処理の前に決めることが重要です。

公式資料

組み込み型とdecimalを参照できます。


Python全20回の目次 | 前の回 | 次の回

このブラウザでは Web Speech API が利用できません。

1 / 17 · 停止中