前回の問題で、reduceとlambda使えるかも?自分勝手な練習です。 2024-03-29 15:12:51 | Python 二重ループですね。8行目が注目です。lambdaのx,yは文字でも使えそうです。 この例では、数字を文字に変えてますが。 #みんなのブログ #python #reduce #lambda « 前々回にジャグ配列(リスト... | トップ | 病とともに生きる、昨日は介... »
3 コメント(10/1 コメント投稿終了予定) コメント日が 古い順 | 新しい順 題意がイマイチ分からない (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], [''])))11, 21, 2, 31, 2, 3, 41, 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する。そういうのが関数型プログラミングの発想のコツ、です。 返信する 規約違反等の連絡 コメントを投稿 サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。 goo blogにログインしてコメントを投稿すると、コメントに対する返信があった場合に通知が届きます。 ※コメント投稿者のブログIDはブログ作成者のみに通知されます 名前 タイトル URL ※名前とURLを記憶する コメント ※絵文字はJavaScriptが有効な環境でのみご利用いただけます。 ▼ 絵文字を表示 携帯絵文字 リスト1 リスト2 リスト3 リスト4 リスト5 ユーザー作品 ▲ 閉じる コメント利用規約に同意の上コメント投稿を行ってください。 コメント利用規約に同意する 数字4桁を入力し、投稿ボタンを押してください。 コメントを投稿する
こんなカンジ?
>>> 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
コメントのprintは難しいのですが、参考にしてみます。注意深く見てみます。yというのは、前回に作った文字列ですかね。xは今回の文字ですか?[1,2,3,4,5]の後の['']は答えの文字列の初期値なんでしょうね。これで二重ループと同等なんでしょうね。
全部正解です。
取り敢えず関数型プログラミング的な発想では「データを生成する」です。
一々printする、のではなく「完全なデータをでっち上げて」一気にprintする。
そういうのが関数型プログラミングの発想のコツ、です。