目次
問題
次のコードを実行した時の出力として正しいものは A 〜 D のどれでしょうか?
解答
正解は。。。
正解は D の
[1, 2, 3, 4]
[[1, 2, 3, 4], [1, 2, 3, 4]]
です。
解説
今回はリストの問題です。
list_b
はリスト内包表記を用いてlist_a
を要素に2つ持つリストになっています。
この書き方だとlist_a
とlist_b
の要素のリストは同じオブジェクトになります。
同じオブジェクトなので、list_a
に要素を追加すると、list_b
の要素のリストも同じオブジェクトなので、出力すると4
が追加されています。
これを避けたい場合、list_a
にだけ4
が追加されるようにしたい場合、スライス操作を使う方法とcopy
モジュールを使う方法があります。
スライス操作を使う
スライス操作を使う場合、次のように書けます。
list_a = [1, 2, 3]
list_b = [list_a[:] for _ in range(2)]
list_a.append(4)
list_b[0].append(999)
print(list_a)
print(list_b)
上記コードの実行結果
[1, 2, 3, 4]
[[1, 2, 3, 999], [1, 2, 3]]
copy モジュールを使う
copy
モジュールは Python に標準で備わっているモジュールです。
copy
モジュールを使う場合は次のように書けます。
import copy
list_a = [1, 2, 3]
list_b = [copy.copy(list_a) for _ in range(2)]
list_a.append(4)
list_b[0].append(999)
print(list_a)
print(list_b)
上記コードの実行結果
[1, 2, 3, 4]
[[1, 2, 3, 999], [1, 2, 3]]
リストについて理解を深めたい方は下記記事にも目を通してみてください。
【Python】リスト(list)
Pythonのリスト型についてまとめました。
Google Colaboratory
下記リンクからアクセスして、Google Colaboratory 上で実際にコードを実行して、結果を確認していただけます。
おわりに
X で Python クイズを配信しています。
#Pythonクイズ
— Taklog (@taklog_info) September 29, 2023
No.12
次のコードを実行した時の出力として正しいものは A 〜 D のどれでしょうか? #Python #pythonprogramming pic.twitter.com/jOX7RxY8to
よかったらフォローしてください!
以上です。
コメント