19日に更新してた

アフィリエイトはないよ

python の内包表記で if を使わず FizzBuzz

どこかで見たけれどいざ検索してみるとなかなか出てこないので、if を使わず書く python 内包表記の FizzBuzz を。

["Fizz"*(i%3==0) + "Buzz"*(i%5==0) + str(i)*(i%3!=0 and i%5!=0) for i in range(1,16)]

["Fizz"*(i%3==0) + "Buzz"*(i%5==0) + str(i)*(i%3!=0)*(i%5!=0) for i in range(1,16)]

bool 値がそのまま 0,1 として使えるのでこういうのもありなんだと感心した記憶があります。

["FizzBuzz" if i%15==0 else "Fizz" if i%3==0 else "Buzz" if i%5==0 else str(i) for i in range(1,16)]

こんな感じの内包表記で多重の if を書くのがあまり好きではないので、書き方としては好きだったりします*1

おまけ。*2

これまたどこかで見て感心したけれど、検索してみるとなかなか出てこないので、python 内包表記の Fibonacci。

[(l.append(l[i]+l[i+1]),l[i])[1] for l  in [[0,1]]  for i in range(20) ]

list への append は none がもどってくるのでほしい値と一緒に tuple か list でくくってインデックスで取ってくるって発想がすごいなと。

*1:とっさに書けるかどうかは別として

*2:出てすぐぐらいの Bard に python 内包表記を使って Fibonacci 数列を出す方法を教えてと頼んでもろくなもん出てこないから追加してみた