ご覧いただきありがとうございます。
python
1 2sample_lambda = lambda **args: [print(arg) for arg in args]) 3sample('aaa', 'bbb', 'ccc') 4
上記のプログラムを実行し、下記のように出力したいです。
aaa bbb ccc
正しい書きかたを教えて頂けませんでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
python
1print_w_args = lambda *args: print(*args, sep='\n') 2print_w_kwargs = lambda **kwargs: print(*kwargs.items(), sep='\n') 3 4print_w_args(1, 2, 3) 5print_w_kwargs(a=1, b=2, c=3)
実行結果
1 2 3 ('a', 1) ('b', 2) ('c', 3)
投稿2018/04/25 10:26
編集2018/04/25 10:29総合スコア6142
0
lambdaはその本体に文は書けず単一の式しか書けません。それが意味するのは何かの値を計算する目的で使うものということです。ですから値の計算ではなく何かの処理(本件では出力)の目的で使うのは不自然に思えることが多いと思います。
もしどうしてもlambda式を使って書くとしたらどうすればいいでしょう。LouiS0616さんご指摘の通り可変長位置引数として書いてみると
python
1def prog(something): pass 2 3(lambda *args: prog([print(arg) for arg in args]))(1, 2) 4 5# or 6 7(lambda *args: (lambda something: None)( 8 [print(arg) for arg in args] 9 ))(1, 2) 10
でもこんなことまでしてlambdaを使う気にはなりません。「単なるトンチ」としかいえないと思います。見やすくなっているわけでも何か利点がある訳でもありませんので。
ちなみにlambda式をそのまんま変数に束縛(代入)するならdefで関数定義しないことの意味がますますない気がします。
結局のところ正しい書き方はlambdaを使わないことのように思えます。
投稿2018/04/25 08:57
編集2018/04/25 09:09総合スコア18392
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/25 09:06
2018/04/25 09:08
2018/04/25 09:14
2018/04/25 09:30 編集
2018/04/25 09:32
2018/04/25 09:49
2018/04/25 09:53
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/25 11:23
2018/04/25 11:49