新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

チョット理解できないreduce,lambda,でも手掛かりは有ったかも?

2024-04-21 09:19:12 | Python

3行目から5行目は11行目から12行目の様に書けるようです。

19行目は何をやっているんだろうか?

どうやらlambdaの定義をやっているだけ、実行結果はない、のかも知れません。

Qでの出力は結果として

[0,  0+1,  0+1+2, 0+1+2+3, 0+1+2+3+4, 0+1+2+3+4+5]をやっている。

y + [[y[-1]  + x]は何をやっている?

例えば今配列の3に注目しているとすると

x = 3で、y[-1] -> 0+1+2 = 3ですよね。

yはなにの意味ですかね?

それとlambdaの定義でy, xとなっている理由ですね?

 

どうもこの辺は、SchemeとかLispの知識の有る方用の機能に思えます。

違っているかも知れませんが。


コメント (1)    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 病とともに生きる、ケアマネ... | トップ | 混乱してました!pythonでの+... »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
もう一つのコメントにも書きましたが (cametan_42)
2024-04-21 10:32:57
> Qでの出力は結果として
>
>[0, 0+1, 0+1+2, 0+1+2+3, 0+1+2+3+4, 0+1+2+3+4+5]をやっている。
>
> y + [[y[-1] + x]は何をやっている?
>
>例えば今配列の3に注目しているとすると
>
> x = 3で、y[-1] -> 0+1+2 = 3ですよね。
>
> yはなにの意味ですかね?

yは初期値(この場合は[0])あるいは前回の計算結果、です。
結局、畳み込みで考えると

((((([0] + [0, 1]) + [1, 2]) + [3, 3]) + [6, 4]) + [10, 5])

ってのがここのreduceがやってる事、です。
上の式を展開して確認してみて下さい。
(注: ここの + は「加算」ではなく、「リストの結合」である事に留意)

> どうもこの辺は、SchemeとかLispの知識の有る方用の機能に思えます。

まぁ、Lisp由来なのは事実ですが、Microsoft F#なんかでも搭載されているし、RubyやJavaScriptにも搭載されています。
昨今だとJavaやC#、もうちょっと前でもC++にもテンプレートの一つとして搭載されています。
もはや、色んな言語に搭載されまくっていますね。
モダンな言語艦橋だと必須機能、って言って良いでしょう。

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Python」カテゴリの最新記事