循环python的多变量

时间:2015-08-14 20:53:39

标签: python for-loop

我知道你可以做嵌套for循环,例如:

for ch in a:
    for ch2 in ch:
        print(ch2)

但是,我已经看到了类似这样的循环:

for ch, ch2 in a:
    # blah blah

这两个循环是否相同?或者第二个循环是否与第一个循环不同?

1 个答案:

答案 0 :(得分:5)

不,他们不是。

第二个是multiple assignment的示例。如果您分配给元组,Python会将迭代的值解压缩到您给出的名称中。

第二个循环与此相当:

for seq in a:
    ch = seq[0]
    ch2 = seq[1]
    # blah blah

正如@Kasramvd在对您的问题的评论中指出的那样,只有当a是具有正确数量的项目的序列时,这才有效。否则,Python将引发ValueError

编辑以解决dict次迭代问题(如评论中所示):

使用普通dict语法迭代Python for x in y时,x是与每次迭代相关的

for x in y:   # y is a dict
    y[x]      # this retrieves the value because x has the key

您正在谈论的循环类型如下:

for key, val in y.items():
    print(key, 'is the key')
    print('y[key] is', val)

这仍然是如上所述的解包方式,因为dict.items为您提供了与dict内容对应的元组列表。那就是:

d = {'a': 1, 'b': 2}
print(d.items())    # [('a', 1), ('b', 2)]