浅いコピー
次のコードを実行したときの出力として、正しいものを1つ選べ。
a = [[1], [2]]
b = a.copy()
b[0].append(9)
print(a)
- A
[[1, 9], [2]] - B
[[1], [2]] - C
[[1, 9], [2, 9]] - 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]] |
- A
正しい。
copy()は浅いコピーなので、内側のリストは共有される。 - B
誤り。内側のリストは同じオブジェクト。
- C
誤り。追加したのは 1 つ目だけ。
- D
誤り。内側のリストに追加している。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。