実装例
print('\n'.join((
# ここから
next((i for [f, i] in [
[lambda: 0 == n % 15, lambda: 'FizzBazz'],
[lambda: 0 == n % 3, lambda: 'Fizz'],
[lambda: 0 == n % 5, lambda: 'Bazz'],
] if f()),
lambda: str(n) # default
)()
# ここまで
for n in range(1, 100)
)))
経緯
他の言語ならば switch (true)
と書きたかったが Python
に switch
はなかった。
感想
毎回 lambda
と書くのが面倒い。
追記 2018/09/10
より読みやすい ( と私が思う ) 書き方がありました。
print('\n'.join((
'FizzBazz' if 0 == n % 15 else
'Fizz' if 0 == n % 3 else
'Bazz' if 0 == n % 5 else
str(n) # default
for n in range(1, 100)
)))
for n in range(1, 100):
if False: pass
elif 0 == n % 15: print('FizzBazz')
elif 0 == n % 3: print('Fizz')
elif 0 == n % 5: print('Bazz')
else: print(str(n)) # default
追記 2020/06/26
match が追加されるそうです