Help us understand the problem. What is going on with this article?

lambdaに関数を渡す

lambdaに関数を渡す

初めて投稿します。アウトプットの場としてもQiitaを利用していこうと思っています。
現在なんちゃってエンジニアのため生暖かい目で見守ってもらえると嬉しいです。

listに対して一部のパラメータを変更しながら処理するための手法です。
ベタに書かせてもらいますので特に意味のある結果を求めていません。

any_data_list = (range(10)) # 0 to 9

# 固定で渡される変数
val1 = 10
val2 = 20

# 3つの値を受け取って単に掛け算結果を返す関数
def func(fix_val1, fix_val2, var_val3):
    return fix_val1 * fix_val2 * var_val3

# any_data_listの全要素に対してfunc関数を処理する
new_list = map(lambda var_val:func(val1, val2, var_val), any_data_list)

# listに変換して結果を出力
print(list(new_list))
出力結果
0, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800]
要素毎の計算結果
var_val3(3番目の値)だけが変動している

 1回目: 10 * 20 * 0 = 0
 2回目: 10 * 20 * 1 = 200
...
10回目: 10 * 20 * 9 = 1800

以下ハマったというか理解するまでの流れです。

new_list = map(lambda var_val:func(val1, val2, var_val), any_data_list)

この行の書き方が最初腑に落ちず処理される順番を1つずつ考えて見ました。
1. var_valにany_data_listの要素が順番にくる
2. 受けとったvar_valを使ってfunc関数が呼ばれる
3. func関数の第3引数にany_data_listの要素が入ってくる

とここまで書いてみたものの、結局の所下記のようにlambdaで処理を完結する場合と考え方同じですね。
最後に関数に渡る部分で少し混乱していました。

map(lambda x: x**2, any_data_list)
  1. xにany_data_listの要素が順番にくる
  2. 渡ってきたxを介してany_data_listの要素を二乗する

(何か自分の中でスッキリしたので良しとしておこう)

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away