3 回答

TA贡献1828条经验 获得超3个赞
我认为这是预期的行为!
认为这[1,2], [3,4]是一个元组文字,相当于 tuple ([1,2], [3,4])。(您可能会在没有注意到的情况下使用它,例如在a, b, c = 10, 20, 30不考虑()... 的情况下分配多个值时)。
因此,在您的示例中,循环按如下方式遍历此列表:
# First iteration we get:
x, y = [1, 2]
# Which is the same as:
x = 1
y = 2
# Which would print:
print(x, y, x+y)
>> 1, 2, 3
# Second iteration we get:
x, y = [3, 4]
# Which is the same as:
x = 3
y = 4
# Which would print:
print(x, y, x+y)
>> 3, 4, 7
现在更有意义了吗?
考虑 zip:如果 zip 会做同样的事情,那么我会怀疑!怎么会有这种非常常见且被认为有用但完全多余的东西?没有人注意到吗?所以你不应该期望他们做同样的事情!;-)
由于要求提供指向文档的指针而进行编辑。
从5.3 元组和序列:
元组由许多用逗号分隔的值组成,例如: ...
正如您所见,输出元组总是括在括号中,以便正确解释嵌套的元组;它们可以带或不带括号输入,尽管通常无论如何都需要括号(如果元组是更大表达式的一部分)。

TA贡献1873条经验 获得超9个赞
理解第一个行为的直观方法是考虑
for x, y in [1,2], [3,4]:
作为分解
for z in [[1,2],[3,4]]:
在哪里
z[0] = [1,2] z[1] = [3,4]

TA贡献1786条经验 获得超13个赞
看这个:
>>> [1,2],[3,4]
([1, 2], [3, 4])
>>> list(zip([1,2],[3,4]))
[(1, 3), (2, 4)]
>>>
结果是不同的,所以当你像这样迭代时:
for x,y in [1,2],[3,4]:
...
它会是这样的:
x=1
y=2
# next loop
x=3
y=4
当循环是:
for x,y in zip([1,2],[3,4]):
...
它像这样迭代:
x=1
y=3
# next loop
x=2
y=4
这就是 Python 创建zip方法的原因。
添加回答
举报