条件式を含む内包表記
次のコードを実行したときの出力として、正しいものを1つ選べ。
print([x if x % 2 else -x for x in range(4)])
- A
[-0, 1, -2, 3] - B
[1, 3] - C
[0, -1, 2, -3] - D
[0, 1, -2, 3]
正解と解説を見る
正解:D
内包表記の if が前(A if 条件 else B)にあるときは条件式で、要素は除かれず変換される。後ろ(for ... if 条件)にあるときは、要素を絞り込む。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `print([x if x % 2 else -x for x in range(4)])` | — |
| 結果 | 実際の出力 | [0, 1, -2, 3] |
- A
誤り。整数の 0 は 0 と表示される。
- B
誤り。条件式の
elseがあるので、要素は除かれない。 - C
誤り。条件が逆。
- D
正しい。奇数はそのまま、偶数は符号を反転する。0 は偶数なので 0。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。