スライスによるコピー
次のコードを実行したときの出力として、正しいものを1つ選べ。
a = [1, 2, 3]
b = a[:]
b.append(4)
print(a)
- A
[1, 2, 3] - B
[1, 2, 3, 4] - C
[4] - D
TypeErrorが発生する。
正解と解説を見る
正解:A
スライス a[:] は新しいリスト(シャローコピー)を返す。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `a = [1, 2, 3]` | a = [1, 2, 3] |
| 2 | `b = a[:]` | b = [1, 2, 3], a = [1, 2, 3] |
| 3 | `b.append(4)` | b = [1, 2, 3, 4] |
| 4 | `print(a)` | a = [1, 2, 3] |
| 結果 | 実際の出力 | [1, 2, 3] |
- A
正しい。
a[:]は新しいリスト(シャローコピー)を作るので、b を変更しても a は変わらない。 - B
誤り。
b = aと書いた場合は同じリストを共有するが、スライスはコピーを作る。 - C
誤り。append は末尾に要素を追加する。
- D
誤り。スライスでコピーしたリストにも append できる。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。