35

hashmapJavaとPythonの間でmap混乱dictするかもしれません。Javaの(k / v抽象化)はPythonと同じようなもの
だと思いましたhashdict

しかし、mapデータ型は何をするのでしょうか?

ハッシュマップの抽象化と同じ抽象化ですか?もしそうなら、それは辞書とどう違うのですか?
ドキュメントを読みましたが、関数型プログラミングというさまざまなパラダイムをまとめる必要がありました。

4

5 に答える 5

32

マップは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]

あなたはハッシュマップとディクテーションの比較に正しいです。

于 2012-04-08T20:50:28.793 に答える
4

本質的にMap、JavaのadictはPythonのaに似ています。どちらのデータ構造も、キーと値の間に関連付けを作成し、get()andcontains()操作で期待されるO(1)パフォーマンスを実現します。

Javaのデータ構造をPythonの関数Mapと混同しないでください。map()

map(関数、反復可能、...)

iterableのすべての項目に関数を適用し、結果のリストを返します。追加の反復可能な引数が渡された場合、関数はその数の引数を取る必要があり、すべての反復可能なアイテムからのアイテムに並行して適用されます

于 2012-04-08T20:51:30.157 に答える
2

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]
于 2018-06-28T19:58:55.360 に答える
1

Pythonにはマップデータ型はありません。mapは、関数をシーケンスにマップする関数です。

def increment(n):
    return n+1
l = [1,2,3]
map(increment, l)

新しいリストが表示されます[2,3,4]

于 2012-04-08T20:51:26.810 に答える
1

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には反復可能なマップオブジェクトがあります。

于 2017-07-13T17:26:11.180 に答える