Python 2 のドキュメントには次のように書かれています:
組み込み関数:
map(function, iterable, ...)
反復可能オブジェクトのすべての項目に関数を適用し、結果のリストを返します。追加の反復可能オブジェクトの引数が渡された場合、関数はその数の引数を受け取る必要があり、すべての反復可能オブジェクトの項目に並列に適用されます。
1 つの反復可能オブジェクトが別の反復可能オブジェクトよりも短い場合、None 項目で拡張されているものとみなされます。
関数が の場合
None
、恒等関数が想定されます。引数が複数ある場合は、map()
すべての反復可能オブジェクトから対応する項目を含むタプルで構成されるリストを返します (一種の転置演算)。反復可能な引数はシーケンスまたは任意の反復可能なオブジェクトにすることができます。結果は常にリストになります。
これはデカルト積を作成する際にどのような役割を果たすのでしょうか?
content = map(tuple, array)
そこにタプルを置くとどんな効果がありますか? また、 map 関数を使用しない場合の出力は でabc
、 map 関数を使用する場合の出力は であることに気付きましたa, b, c
。
この機能を完全に理解したいです。参照定義も理解しにくいです。装飾が多すぎます。
ベストアンサー1
map
特に Python 的ではありません。代わりにリスト内包表記を使用することをお勧めします。
map(f, iterable)
基本的には以下と同等です:
[f(x) for x in iterable]
map
出力リストの長さは常に入力リストと同じなので、単独では直積を行うことはできません。ただし、リストの内包表記を使用すれば直積を簡単に行うことができます。
[(a, b) for a in iterable_a for b in iterable_b]
構文は少しわかりにくいですが、基本的には次の構文と同じです。
result = []
for a in iterable_a:
for b in iterable_b:
result.append((a, b))