Python での使用について学びたかったmap
のですが、Google 検索でhttp://www.bogotobogo.com/python/python_fncs_map_filter_reduce.phpにたどり着きました。
そのページのコードの 1 つは for ループを使用し、map
その for ループ内に興味深い方法で配置しますmap
。関数内で使用されるリストは、実際には 2 つの関数のリストを取ります。コードは次のとおりです。
def square(x):
return (x**2)
def cube(x):
return (x**3)
funcs = [square, cube]
for r in range(5):
value = map(lambda x: x(r), funcs)
print value
出力:
[0, 0]
[1, 1]
[4, 8]
[9, 27]
[16, 64]
したがって、そのチュートリアルのこの時点で、「そのコードをその場で関数 (ラムダ) で記述できれば、標準関数を使用して記述できる」と考えましたdef
。そこで、コードを次のように変更しました。
def square(x):
return (x**2)
def cube(x):
return (x**3)
def test(x):
return x(r)
funcs = [square, cube]
for r in range(5):
value = map(test, funcs)
print value
r
最初のコードと同じ出力が得られましたが、変数がグローバル名前空間から取得されたことと、コードが厳密な関数型プログラミングではないことが気になりました。そして、つまずいたところがあります。これが私のコードです:
def square(x):
return (x**2)
def cube(x):
return (x**3)
def power(x):
return x(r)
def main():
funcs = [square, cube]
for r in range(5):
value = map(power, funcs)
print value
if __name__ == "__main__":
main()
このコードをいじってみましたが、問題は function に渡すことdef power(x)
です。この関数に渡そうとするさまざまな方法を試しましたが、ラムダにx
は list の各反復に変数を自動的に割り当てる機能がありますfuncs
。
標準関数を使用してこれを行う方法はありますdef
か、それとも不可能であり、ラムダのみを使用できますか? 私はPythonを学んでおり、これが私の最初の言語であるため、ここで何が起こっているのかを理解しようとしています.