我知道你可以做嵌套for循环,例如:
for ch in a:
for ch2 in ch:
print(ch2)
但是,我已经看到了类似这样的循环:
for ch, ch2 in a:
# blah blah
这两个循环是否相同?或者第二个循环是否与第一个循环不同?
答案 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)]