二重ループの内包表記
次のコードを実行したときの出力として、正しいものを1つ選べ。
print([(i, j) for i in range(3) for j in range(i)])
- A
[(0, 0), (1, 1), (2, 2)] - B
[(1, 0), (2, 0), (2, 1)] - C
[(0, 1), (0, 2), (1, 2)] - D
[(1, 0), (2, 0), (2, 1), (0, 0)]
正解と解説を見る
正解:B
内包表記の for は、書いた順に外側から内側のループになる。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `print([(i, j) for i in range(3) for j in rang…` | — |
| 結果 | 実際の出力 | [(1, 0), (2, 0), (2, 1)] |
- A
誤り。内側のループが
range(i)なので、jはiより小さい。 - B
正しい。外側の
iに対し、内側のjはrange(i)。iが 0 のときは空。 - C
誤り。
iとjの大小関係が逆。 - D
誤り。
iが 0 のとき、内側のループは空。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。