LoginSignup
3
1

More than 5 years have passed since last update.

Pythonでフィボナッチ数列をワンライナー

Posted at

はじめに

今回はネタでフィボナッチ数列をワンライナーしてみたのでそのコードの軽い解説的な感じです。
ワンライナーってロマンありますよね。
そんな毒にも薬にもならない記事になっております。

コード

fibo.py
[(lambda n:functools.reduce(lambda x,y:(x[0]+x[1],x[0]),[(1,1)]*(n-2))[0])(int(input())) for functools in [__import__('functools')]]

解説

特に難しいことはなくて、見たままのコードですが順番に

[lambda n:functools.reduce("残りの処理")(int(input())) for functools in [__import__('functools')]]

この部分ではlambda式の引数nにinputを代入しています。右側のimportでfunctoolsライブラリを入れています。
reduce関数は畳み込み演算を行う関数です。
list内包表記でimportするやり方は普通に書く時には使わないようにしましょう。

[(lambda x, y:(x[0] + x[1]. x[0]*(n-2)[0]), [(1, 1)*(n-2)[0]])]

これが実際の畳み込み演算の中身です。
最初の引数nまで順番に足し合わせます。

まとめ

最近、Pythonって内包表記とか三項演算子で結構ワンライナーしやすくて面白いなと思います。
皆さんも複雑な数列をワンライナーしてみてはいかがでしょうか。

3
1
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
1