作者: 機械伯爵
日時: 2004/2/14(12:02)
 ども、お騒がせしました、機械です。

>>  そもそも機械式/電子式計算機は、階乗計算をこなす
>> ために生まれました。
>
>そ、そうだったのか…

 ごめんなさい。冗談です。

 で、今回の記事は、全体的に冗談なので、そのつもり
で・・・

※全くもって実用的じゃないし・・・

>ところで階乗を簡単に計算するには
>reduce(lambda x,y:x*y, range(1,101), 1)
>というのが一般的ではないでしょうか?

 そうですね・・・確か教科書系の本にも、reduceを使
う方法が出てたはずです。

 で、なぜ書かなかったかというと・・・私が無意識的
に外しました(をい・・・)

 組み込み関数を使うのは(rangeでも躊躇してますが)、
なんか「文法が不十分」というような敗北宣言につなが
るような気がして、私自身、非常時以外使いません。

※ちなみに、私が実際によく使う手は、whileループだっ
  たりします・・・頭が基本的にBASICからあまり進歩し
  ていないみたいなんで・・・

 というか、reduceの使い方自体が、かなり長い間、私
には理解できなかったです・・・いや、覚えてみればご
く単純なコトなんですが、覚えたら覚えたで、「なんでfor
文使うところを、こんな関数があるんだ?」って感じで。

 現在では、reduceも結構重宝することが実感できるよ
うになりましたが、なんか頭の中で拒否してるみたいで
すね。

※どうせ関数で書くなら再帰だ!とか・・・

>あるいは lambda .. を operator.mul に置き換えたものとか。

 Fe2+さんはoperatorモジュールがお好きなようですが、
多分一般的では無いと思われます☆

 lambdaはともかく、operatorモジュールを使うのは、
余程厳密に定義が必要な時(mulの名前が他で使われて変
形されない保証)か、あるいは演算子定義をつかったマ
クロっぽい書き方をするかなり高度な使い方など、かな
り特殊な場面のみと思われます。

 パンピーなローレベルスクリプタには、猫に小判かと。

 まぁ今回は、実は最後に書いた「内包表記をないがし
ろにした使い方」とゆーのが妙に気に入ったので、身近
な「お勉強題材」の階乗計算にかこつけて書いたとゆー
与太話的なものなので、軽く流していただければ幸いで
す。

 こういうつまらんことに労力使ってるから、あたしゃ
プログラミングの腕、上がらないんだろーなぁ・・・

   /機械伯爵/