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

Python lambda,map,listの1行のコードを解読

背景

python初心者です。
yolov3のコードを勉強しているとき、 lambda,map,listが1行で表記されていたので、頭が痛くなった。
簡単に自分のメモとしても残しておきたく、記載します。

lambda,map,listの1行のコード

keras-yolov3のyolo.pyにおける85行辺りのコードである。

1_yolo_code_around_85.py
self.colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples))

困難にしている要素とそれのザックリ解説
・(*x):可変長引数
・lambda:無名関数   
・map:組み込み関数
・list:リスト化

hsv_to_rgbではhsvに対応する引数が3つ必要である。
そのため以下のようにも変更できる。

2_yolo_code_around_85.py
self.colors = list(map(lambda x: colorsys.hsv_to_rgb(x[0],x[1],x[2]), hsv_tuples))

リストxを上記のようにするとイメージがしやすいです。
lambdaによってリストxを用いた関数を定義し、
hsv_tuplesの値を関数に代入します。
mapにより、全要素に同じ処理を行い、
リスト化する。

Why not register and get more from Qiita?
  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
No 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
ユーザーは見つかりませんでした