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

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

前回の問題で、reduceとlambda使えるかも?自分勝手な練習です。

2024-03-29 15:12:51 | Python

二重ループですね。8行目が注目です。lambdaのx,yは文字でも使えそうです。

この例では、数字を文字に変えてますが。


コメント (3)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 前々回にジャグ配列(リスト... | トップ | 病とともに生きる、昨日は介... »
最新の画像もっと見る

3 コメント

コメント日が  古い順  |   新しい順
題意がイマイチ分からない (cametan_42)
2024-03-29 21:09:51
何がやりたいのか、イマイチピンとこないんだけど、二重ループのプログラムと同じプログラムを書きたい、んですかね?

こんなカンジ?

>>> print('\n'.join(reduce(lambda y, x: y + [y[-1] + (', ' if y[-1] else '') + str(x)], [1, 2, 3, 4, 5], [''])))

1
1, 2
1, 2, 3
1, 2, 3, 4
1, 2, 3, 4, 5
返信する
確かに、そうかも知れません。 (isam)
2024-03-29 22:54:35
 リストをもう少し見ていくと、スライスというのがあって、それを使えば、もう少し単純に書けるかも知れません。
 コメントのprintは難しいのですが、参考にしてみます。注意深く見てみます。yというのは、前回に作った文字列ですかね。xは今回の文字ですか?[1,2,3,4,5]の後の['']は答えの文字列の初期値なんでしょうね。これで二重ループと同等なんでしょうね。
返信する
慣れてきましたね。 (cametan_42)
2024-03-30 00:13:28
> yというのは、前回に作った文字列ですかね。xは今回の文字ですか?[1,2,3,4,5]の後の['']は答えの文字列の初期値なんでしょうね。

全部正解です。

取り敢えず関数型プログラミング的な発想では「データを生成する」です。
一々printする、のではなく「完全なデータをでっち上げて」一気にprintする。
そういうのが関数型プログラミングの発想のコツ、です。
返信する

Python」カテゴリの最新記事