pythonでcallableのリストを反復処理することに問題があります。呼び出し可能文字列は、文字列のジェネレータで呼び出されるはずです。現在の動作では、リスト内の最後の呼び出し可能オブジェクトは、リスト内の呼び出し可能オブジェクトの数だけ呼び出されます。私の現在のコード:callableのリストを反復する問題
for m in list_of_callables:
strings = (m(s) for s in strings)
上記のコード文字列は、最初に 'Generator'タイプです。私はまた、次のことを試してみました:これは、どちらかの仕事をしていない
for i in range(len(list_of_callables)):
strings = (list__of_callables[i](s) for s in strings)
、私は呼び出し可能オブジェクトをループしないし、単にそれだけで正常に動作し、それらを呼び出すとき:
strings = (list_of_callables[0](s) for s in strings)
strings = (list_of_callables[1](s) for s in strings)
これはに奇妙なよう上記のように私はforループと同等でなければなりません。
ご協力いただきありがとうございます:)。
これは、[遅延バインディング閉鎖]のエピソードのように聞こえる(http://docs.python-guide.org/en/latest/ write/gotchas /#late-binding-closures) –
「ジェネレータ」とは何かを知っていますか?私は[ジェネレータ式](https://docs.python.org)の代わりに[list comprehension](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)を使用したいと思います/3/reference/expressions.html#generator-expressions)。 –
ここで期待される動作は何ですか?ジェネレータの内側と外側の両方にある識別文字列「文字列」を再利用すると、私は混乱します。そのため、コードの背後にある推論を理解することが非常に難しくなります。 –