#Reference
map
関数について調べる際、以下のサイトを参照しました。
map()関数とfilter()関数
lambda
については以下に解説が記載されています。
Pythonのlambdaって分かりやすい
#map,lambda
pythonを勉強中、mapとlambdaなるものが出てきた。
いまいちラムダ式が分かっていないので自分用にまとめ。
jupyter notebook でShift + tab
でドキュメントを確認すると以下のような説明。
#jupyter notebook より引用
Init signature: map(self, /, *args, **kwargs)
Docstring:
map(func, *iterables) --> map object
調べてみると、map
関数とはイテラブルオブジェクトの各要素を関数に渡して処理する関数らしい。
返り値としてmap
オブジェクトが返ってくる。
- イテラブルオブジェクトとは...文字列
"abc"
、リスト[a,b,c]
、タプル(a,b,c)
のように、繰り返しの処理で1つずつ要素を取り出せるオブジェクトのこと。
def function(x):
ans = x * 2
return ans
nums = [1,2,3,4,5]
result = map(function, nums)
print(result)
#結果
<map object at 0x110599860>
試しにトライするとmap
オブジェクトが返ってきてしまった。
list
に変換すると上手くできていることが分かった。
print(list(result))
#結果
[2, 4, 6, 8, 10]
次に、map
とlambda
を組み合わせて用いる。
同じ結果を得ることができた。lambda
式を用いるとだいぶすっきりと書ける。
nums = [1,2,3,4,5]
result2 = map(lambda x: x*2 ,nums)
print(list(result2))
#結果
[2, 4, 6, 8, 10]
文字の入れ替えにも挑戦してみた。
replace
関数を使うことで、 /
を,
に置換した。
csvファイルのヘッダー部分の編集等で使用できそう。
timelist = ["year/month/day/day of the week/time"]
result3 = map(lambda y: y.replace("/", ",") , timelist)
print(list(result3))
#結果
['year,month,day,day of the week,time']
※引用・参照部分に問題がございましたら、ご連絡をお願いいたします。