LoginSignup
3
2

More than 3 years have passed since last update.

闇のelif

Last updated at Posted at 2018-09-04

実装例

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) と書きたかったが Pythonswitch はなかった。

感想

毎回 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 が追加されるそうです

3
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2