python if elif elseの簡略化された書き方(リスト、辞書導出式、lambda関数で使用)


最近のライタはリスト導出式に判断条件を追加したり、lambda匿名関数に判断条件を追加したり、プログラムが長すぎる場合があり、判断文が必要な場合は複数行書きたくない(うるさいように見える)とif elif elseの簡略化法を使ったり(この場合は可読性が悪い)、この使い方をまとめてみます.
1、if elif elseの一行の書き方
一般的な書き方:
a = 5

if a <10:
    print('  10')
elif a<20:
    print('  10  20')
elif a<30:
    print('  20 30')
else:
    print('  30')

10未満
書き方を簡略化:
 
a = 5
print('  10') if a<10 else print('  10  20') if a<20  else print('  20  30') if a< 30 else print('  30')

10未満
簡略化された文の書き方は、if文の次の文を常にif文の前に書きます.
2、書き方の簡略化リスト導出式における運用
リスト導出式を使用する場合、条件を付けて簡略化された書き方を使用する必要があります.
一般的な書き方:
a = ['female:   ','female:   ','female:   ','male:   ','male:   ','male:   ']

b = []
for i in a:
	if i[:6] == 'female':
		b.append(i)
	else:
		b.append((i[-4:] + '    '))

b

['female:小さな赤'、'female:小さな麗'、'female:小さな花'、':小さな周は女性ではありません'、':小さな飛は女性ではありません'、':小さな文は女性ではありません']
リスト式で使用する簡略化された書き方:
a = ['female:   ','female:   ','female:   ','male:   ','male:   ','male:   ']
[i  if i[:6] == 'female' else (i[-4:] + '    ') for i in a]

['female:小さな赤'、'female:小さな麗'、'female:小さな花'、':小さな周は女性ではありません'、':小さな飛は女性ではありません'、':小さな文は女性ではありません']
リストの導出式とif elseの簡略化した書き方で簡単になったのではないでしょうか.
また、リスト導出式でif文を1つだけ追加する場合とif else文を使用する場合のifの位置は異なります.
[i for i in range(10) if i%2 == 0]

 [0, 2, 4, 6, 8]
3、簡略化書き方lambda匿名関数における運用
list(map(lambda x:x if x%2 == 0 else x+1000 if x == 3 else x+1,[i for i in range(20)]))

 [0, 2, 2, 1003, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20]
if elif elseのlambda関数での運用方式はその簡略化方式とそっくりである.