Python:左侧括号分配

时间:2012-07-14 21:07:10

标签: python kotti

所以我在Kotti内找到了这段代码:

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

我想知道:左手方括号有什么作用?我在python shell中做了一些测试,但我无法弄清楚它的用途。 奖金问题:lambda返回什么?我猜一个(Boolean, self._children)的元组,但那可能是错的......

2 个答案:

答案 0 :(得分:9)

这是列表解包,只包含一个元素的列表。相当于:

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

(例外情况是如果self._children的多个元素满足条件 - 在这种情况下,Kotti的代码会抛出一个错误(解包的值太多),而上面的代码将使用第一个列表)。

另外:lambda ch: ch.name == path[0]会返回TrueFalse

答案 1 :(得分:2)

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

这会将child设置为结果的第一个元素。它是list [0] = ... [0]的语法糖。它也可以是两个元素,如[a, b] = [10, 20],它是a = 10; b = 20

的糖

此外,右侧的元素数量应该与左侧相同,否则会抛出异常