元组解包列表

ide*_*typ 1 python

我今天对以下代码感到惊讶:

testcases = [([1, 1, 1], 2, 2)]

for a, b, c in testcases:
    print(a, b, c)
Run Code Online (Sandbox Code Playgroud)

它打印:

[1, 1, 1] 2 2
Run Code Online (Sandbox Code Playgroud)

我预计会出现错误,并认为我们需要第二个循环来获取元组的元素。谁能向我解释它是如何工作的?我不明白如何ab并被c分配。我使用了 Python 3.6。干杯!

qua*_*ana 5

让我们看看你有什么:

testcases = [([1, 1, 1], 2, 2)]
Run Code Online (Sandbox Code Playgroud)

这是一个列表。一号。所以testcases[0]是存在的唯一元素。

所以这段代码:

for a, b, c in testcases:
    pass
Run Code Online (Sandbox Code Playgroud)

是一个长度为 1 的循环。所以每次通过循环(那只是一次),你都会得到元素:([1, 1, 1], 2, 2)它是一个tuple. 三号的。

所以拆包:a,b,c = testcases[0]给出:

a == [1, 1, 1]
b == 2
c == 2
Run Code Online (Sandbox Code Playgroud)

这就是您看到的打印内容。