5

だから私はコッティの中にこのコードを見つけました:

[child] = filter(lambda ch: ch.name == path[0], self._children)

そして、私は疑問に思っていました:左側の角かっこは何をしますか?Pythonシェルでいくつかのテストを行いましたが、その目的を完全に理解することはできません。ボーナスの質問:lambdaリターンは何ですか?のタプルを推測しますが(Boolean, self._children)、それはおそらく間違っています...

4

2 に答える 2

10

これは、単一の要素のみを持つリストのリストの解凍です。同等のものは次のようになります。

child = filter(lambda ch: ch.name == path[0], self._children)[0]

(例外は、条件を満たした要素が複数self._childrenある場合です。その場合、Kottiのコードはエラー(解凍するには値が多すぎます)をスローしますが、上記のコードはリストの最初の要素を使用します)。

また、またはのいずれかをlambda ch: ch.name == path[0]返します。TrueFalse

于 2012-07-14T21:09:36.050 に答える
2
[child] = filter(lambda ch: ch.name == path[0], self._children)

これにより、子が結果の最初の要素に設定されます。これは、list [0] =...[0]の構文上の砂糖です。[a, b] = [10, 20]それはまた、砂糖であるのような2つの要素である可能性がありますa = 10; b = 20

また、右側からの要素の量は左側と同じである必要があります。そうでない場合、例外がスローされます。

于 2012-07-14T21:12:32.667 に答える