Python

【Python】if文とfor文を1行で書く【3項演算子】

for文を1行で書いたり(リスト内包表記)、if-else文を1行で書いたり(三項演算子)するのは非常に便利で良く使う表記。

更にリスト内包表記と三項演算子も非常に便利な表現だが、

if文とfor文、if-else文とfor文で語順が違ったりしてたまにド忘れしたりする。

そんな時のための備忘録。

 

リスト内包表記

for文の中の処理が1行で書ける時などに良く使う。

list_a = ["a", "b", "c"]
list_b = ["A", "B", "C"]
list_ab = [a + "_" + b for a, b in zip(list_a, list_b)]
>> ['a_A', 'b_B', 'c_C']

 

三項演算子

if-else文を1行で書きたい時に使う。

if-elifなども使えるが、可読性のためになるべくif-elseぐらいにした方がいいと思う。

a = 2
b = 3
result = "一致" if a == b else "不一致"
>> "不一致"

 

if文とリスト内包表記

リスト内包表記にif文を入れる場合はif節が後ろの方に来る。

nums = [1, 2, 3, 4, 5, 6]

odds = [num for num in nums if num % 2 == 1]
evens = [num for num in nums if num %2 == 0]
print(odds)
print(evens)
>>[1, 3, 5]
[2, 4, 6]

 

if-else文とリスト内包表記

リスト内包表記にif-else文を入れる場合はif-else文を先に書く。

nums = [1, 2, 3, 4, 5, 6]

num_types = ["odd" if num %2 == 1 else "even" for num in nums]
print(num_types)
>>['odd', 'even', 'odd', 'even', 'odd', 'even']