以下のコードですが、なぜ動きが異なるのでしょうか。
どちらもforでループするので、appendしなければ、Aのコードの挙動の方が正しいように思うのですが、Bのコードは、なぜ出力のようになるのでしょう。
python
1### A ### 2for _ in range(3): 3 a = list(map(int, input().split())) 4 5### B ### 6b = [list(map(int, input().split())) for _ in range(3)] 7 8print("a:",a) 9print("b:",b)
--- 入力 ---
1 2
3 4
5 6
77 88
66 88
99 00
--- 出力 ---
a: [5, 6]
b: [[77, 88], [66, 88], [99, 0]]
aはどこにも保存していないのだから、最後に代入された値しか表示されないのは当然では?bは内包表記内で3回回した結果が返ってくるのだから3つの要素になります。
bも回すたびに上書きされてしまうと思ったのですが、違うのでしょうか。
bは内包表記が実行された結果が保存されるので、内包表記ないで何度ループしても結果は一度だけセットされます。Pythonの基礎を習っているならもっと簡単な例で試すと良いでしょう。listやmap, 型変換, input, split, _変数など、内包表記を試すには余計な物が多すぎると思います。
ありがとうございます。
BAしたいのですが、良ければ回答欄にペーストしてもらえないでしょうか。
回答1件
あなたの回答
tips
プレビュー