hashmap
JavaとPythonの間でmap
混乱dict
するかもしれません。Javaの(k / v抽象化)はPythonと同じようなもの
だと思いましたhash
dict
しかし、map
データ型は何をするのでしょうか?
ハッシュマップの抽象化と同じ抽象化ですか?もしそうなら、それは辞書とどう違うのですか?
ドキュメントを読みましたが、関数型プログラミングというさまざまなパラダイムをまとめる必要がありました。
マップはPythonのデータ型ではありません。一連の値に関数を適用し、結果を返します。
>>> def f(x):
... return x**2
...
>>> list(map(f, range(5)))
[0, 1, 4, 9, 16]
多くの場合、そのような単純なケースが「pythonic」であるために、リスト内包表記を使用します。
>>> [x**2 for x in range(5)]
[0, 1, 4, 9, 16]
あなたはハッシュマップとディクテーションの比較に正しいです。
本質的にMap
、Javaのadict
はPythonのaに似ています。どちらのデータ構造も、キーと値の間に関連付けを作成し、get()
andcontains()
操作で期待されるO(1)パフォーマンスを実現します。
Javaのデータ構造をPythonの関数Map
と混同しないでください。map()
map(関数、反復可能、...)
iterableのすべての項目に関数を適用し、結果のリストを返します。追加の反復可能な引数が渡された場合、関数はその数の引数を取る必要があり、すべての反復可能なアイテムからのアイテムに並行して適用されます
Nolenの答えはPython2に対するものです。
Python 3では、mapは反復可能なデータ型であり、Python2でitertoolsのimapによって返されるものと同等です。
上記のPython3での最初のPython2の例と同じ結果を得るには、次のように記述します。
>>> def f(x):
... return x**2
...
>>> list(map(f, range(5)))
[0, 1, 4, 9, 16]
Pythonにはマップデータ型はありません。mapは、関数をシーケンスにマップする関数です。
def increment(n):
return n+1
l = [1,2,3]
map(increment, l)
新しいリストが表示されます[2,3,4]
Python 3では、mapは反復可能なデータ型を返します。これはPython2のitertoolsのimapによって返されるものと同等です。
Python3でNolanRoyaltyのPython2の例と同じ結果を得るには、次のように記述します。
>>> def f(x):
... return x**2
...
>>> list(map(f, range(5)))
[0, 1, 4, 9, 16]
Python 3でリストにラップしないと、マップオブジェクトが取得されます。
>>> map(f, range(5))
... <map object at 0x000000000327E780>
そのため、Python3には反復可能なマップオブジェクトがあります。