私はPythonのドキュメントを読んでPython言語を深く理解し、フィルターとマップ機能に出くわしました。SO のさまざまな Python の質問で両方を見たことがありますが、以前はフィルターを使用していましたが、マップしたことはありません。
Python チュートリアルでそれらについて読んだ後、私は 2 つの違いについて混乱しています。たとえば、5.1.3 から。関数型プログラミング ツール:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
と
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
これらは機能的にはほぼ同じに見えたので、ターミナルに入って対話的に Python を実行し、自分のケースをテストしました。map
上記の 1 番目と 2 番目のインスタンスの両方で使用しましたが、最初のインスタンス ( return x % 2 != 0 and x % 3 != 0
) では、数値ではなくブール値のリストが返されました。
map
ブール値を返す場合と実際の戻り値を返す場合があるのはなぜですか?
誰かが と の違いを正確に説明できますmap
かfilter
?