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

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

やっぱり分からない?reduceとlambdaの組み合わせ x,y:y,xとなった場合?

2024-04-11 09:00:39 | Python

ラムダ式で、"+","*"はx,yをy,xと変えても結果は同じですので、問題ないのですが、(計算だとして)

"-","/"は逆だと意味が違います。?がついているとこはほぼ理解不能です。計算はしてくれますけど。

上の例では、漏れてましたが、初期値が0だと問題になるのが"/"でした。多分*では0になるだけで

エラーにはならないでしょう。

 

"-"の場合は状況に応じて、-(-100)が+100になってる場合もあるのかも知れません

こうなっている原因が不明だと、分かったとは言えませんね。


コメント (4)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« あはは、昨日は訪問リハビリ... | トップ | 前の投稿の続き、pythonでred... »
最新の画像もっと見る

4 コメント

コメント日が  古い順  |   新しい順
畳み込み、だから括弧を使って上手く判別しよう (cametan_42)
2024-04-11 21:55:22
J: reduce(lambda x, y: y/ x, [100, 200], 10) => 200/(100/10) => 正解!

K: reduce(lambda x, y: y/ x, [100, 200, 300], 10) =>
300/(200/(100/10))

Q: reduce(lambda x, y: y - x, [100], 0) => 100 - 0 => 正解!

Q1: reduce(lambda x, y: y - x, [100], 50) => 100 - 50 => 正解!

R: reduce(lambda x, y: y - x, [100, 200], 0) => 200 - (100 - 0)

R1: reduce(lambda x, y: y - x, [100, 200], 50) => 200 - (100 - 50)

R2: reduce(lambda x, y: y - x, [100, 200, 300], 0) => 300 - (200 - (100 - 0))
返信する
有難う御座いました! (isam)
2024-04-12 09:02:28
 リストの要素が1個の場合は、reduce使わないほうが、混乱しませんかね。
 よく見ると、同じですね。少しは分かったかも。分からないのは、何使うんだろうか?ですね。こんな場面が想像できません。
返信する
うん。 (cametan_42)
2024-04-12 22:32:31
> リストの要素が1個の場合は、reduce使わないほうが、混乱しませんかね。

そうですね。そもそも「畳み込む」必要がないですし(笑)。
ただし、まぁ、練習はあくまで練習ですよ(笑)。

> 分からないのは、何使うんだろうか?ですね。こんな場面が想像できません。

まぁ、これも「練習だから」って言ってはおきますが・・・。
原則、forを使って何か書きたい、って思った時に毎回reduceが使えないか?って自問することです。
厳密に言うと、Pythonの場合、forで繰り返しを書きたい、って思った際、

1. まずはリスト内包表記が使えないか考える。
2. リスト内包表記が不適切臭い、って思った時、reduceが使えないか考える。

の2つを必ず候補として考える、って事です。殆どの場合リスト内包表記があればどーにかなる。「どーにかならなかった」ケースの時、reduceが使える可能性がある。
実際やってみれば、恐ろしいくらい素のforの登場確率は減っていきます。
返信する
有難う御座います (isam)
2024-04-13 21:28:32
 なんとなく分かった気になってますが、本質を理解してない気もします。初期値の扱いと要素の順番が逆になる場合です。
返信する

コメントを投稿

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

Python」カテゴリの最新記事