1. ホーム
  2. パイソン

[解決済み】map関数を理解する

2022-03-26 20:30:55

質問

map(function, iterable, ...)

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

ある反復記号が他のものより短い場合、それは None の項目で拡張されているものとする。

もし関数が None の場合、同一性関数が想定されます。複数の引数がある場合は map() は,すべての反復子から対応する項目を含むタプルで構成されるリストを返す(一種の転置操作である)。

反復可能な引数には、シーケンスまたは任意の反復可能なオブジェクトを指定することができ、結果は常にリストです。

デカルト積を作るのに、どのような役割を果たすのでしょうか?

content = map(tuple, array)

タプルをどこかに置くとどんな効果があるのでしょうか?また、map関数がない場合の出力は次のようになります。 abc で、それを使うと a, b, c .

この関数を完全に理解したい。参考定義もわかりにくい。派手な演出が多すぎる。

どのように解決するのですか?

map は特にパイソン的ではありません。代わりにリスト内包を使うことをお勧めします。

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))