どこかで見たけれどいざ検索してみるとなかなか出てこないので、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 でくくってインデックスで取ってくるって発想がすごいなと。