1. ホーム
  2. python

[解決済み] python mapと他の関数ツールの使用

2022-07-23 06:44:57

質問

Pythonで関数型プログラミングを学び、理解しようとしているのですが、これはかなり初歩的なことです。次のコード。

foos = [1.0,2.0,3.0,4.0,5.0]
bars = [1,2,3]

def maptest(foo, bar):
    print foo, bar

map(maptest, foos, bars)

を生成します。

1.0 1
2.0 2
3.0 3
4.0 None
5.0 None

Q. Pythonでmapやその他の関数ツールを使って、ループなどを使わずに次のようなものを作る方法はありますか?

1.0 [1,2,3]
2.0 [1,2,3]
3.0 [1,2,3]
4.0 [1,2,3]
5.0 [1,2,3]

余談ですが、fooとbarの間に依存関係がある場合、実装はどのように変わるのでしょうか。例えば

foos = [1.0,2.0,3.0,4.0,5.0]
bars = [1,2,3,4,5]

と印字します。

1.0 [2,3,4,5]
2.0 [1,3,4,5]
3.0 [1,2,4,5]
...

追伸:if、ループ、ジェネレータを使った素朴な方法は知っていますが、関数型ツールを使って同じことを達成する方法を学びたいです。maptest に if 文を追加するか、maptest 内で別のフィルターマップをバーに適用すればよいのでしょうか。

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

最も簡単な方法は bars を異なる関数に渡すのではなく、直接 maptest :

foos = [1.0,2.0,3.0,4.0,5.0]
bars = [1,2,3]

def maptest(foo):
    print foo, bars

map(maptest, foos)

オリジナルの maptest 関数では、ラムダ関数も使用できます。 map :

map((lambda foo: maptest(foo, bars)), foos)