石のような静寂

常に裏切りを予測する者が落胆することはまず無い

map

今まで玩具みたいなスクリプトを稀にだらだら書いていたが、たぶん2回くらいしか使ったことがないmapのちょっとまとめ。

C++
連想配列。いわゆる辞書型。
標準ライブラリに実装されてる。
あまり積極的にC++を書いてこなかったけど、そこそこ見かける。
std::map<int, std::string>。こんなの。

Java
C++と一緒。

【本題】
Pythonのmapは型じゃなくて関数。
map(functioniterable, ...)
とはいえ、map objectが返ってくるんですけど。

def func(x):
return x * x

def main():
a = [1, 2, 3, 4, 5]
b = map(func, a)
print(b) # map object

こうなる。
あとは__next__()などでiterator回すか、list()でリスト[]として受け取るか(それだったらmap使う意味があるかは...わかりません!)

b = map(x * x, a)

とできないところがリスト内包表記との違いだろうか。
その内包表記との違いはyieldなとこ。
だからlambdaとのセットが一般的。というかlambdaを使わないと

for b in a:
func(b)

単純にこれになる。

b = (x * x for x in a)

ジェネレータ式ならこう。

ちなみにmapとよくいるfilterはfuncがTrueを返すときだけ演算結果を返す。

面白い使い方とかは無い。