迭代器在for-in语句中返回迭代时的行为是什么?

Jam*_*way 2 python python-2.7

我不明白为什么会这样:

a = [(1,2)]
for x, y in a:
    print x, y
Run Code Online (Sandbox Code Playgroud)

而这不是:

a = ((1,2))
for x, y in a:
    print x, y
Run Code Online (Sandbox Code Playgroud)

我相信在第一种情况下发生的是我们创建一个返回单个值的迭代器,(1,2).该元组被解压缩,将1分配给x,将2分配给y.

在第二个,为什么不完全相同的事情发生?

Jon*_*nts 8

a = ((1,2))tuple2个元素中的()一个 - 它周围的s什么都不做 - 它是相同的a = (1,2),要创建一个1元组,你需要一个尾随逗号,例如:a = ((1,2),)这是一个包含2元组的1元组.