Python 模擬試験

Python実践 模擬試験 第2回 問5・3章 Pythonの言語仕様(リスト・タプル・辞書・集合)

浅いコピー

次のコードを実行したときの出力として、正しいものを1つ選べ。

a = [[1], [2]]
b = a.copy()
b[0].append(9)
print(a)
  1. A

    [[1, 9], [2]]

  2. B

    [[1], [2]]

  3. C

    [[1, 9], [2, 9]]

  4. D

    [[1], [2], 9]

正解と解説を見る

正解:A

浅いコピー(copy()・スライス)は、内側のオブジェクトを共有する。入れ子を完全に複製するには copy.deepcopy。

順実行する行実行後の変数
1`a = [[1], [2]]`a = [[1], [2]]
2`b = a.copy()`b = [[1], [2]], a = [[1], [2]]
3`b[0].append(9)`b = [[1, 9], [2]]
4`print(a)`a = [[1, 9], [2]]
結果実際の出力[[1, 9], [2]]

学習のポイント:ミュータブルなオブジェクトを共有すると、意図しない変更が起きる。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。