我知道你可以嵌套 for 循环,例如:
for ch in a:
for ch2 in ch:
print(ch2)
但是,我见过这样的循环:
for ch, ch2 in a:
# blah blah
这两个循环是等价的吗?还是第二个循环做的事情与第一个不同?
请您参考如下方法:
不,他们不是。
第二个是multiple assignment的例子.如果您分配给一个元组,Python 会将可迭代对象的值解压缩为您提供的名称。
第二个循环与此相当:
for seq in a:
ch = seq[0]
ch2 = seq[1]
# blah blah
正如@Kasramvd 在对您的问题的评论中指出的那样,这仅在 a 是具有正确项目数的序列时才有效。否则,Python 将引发 ValueError。
编辑以解决 dict 迭代(如评论中所述):
当您使用普通的 for x in y 语法遍历 Python dict 时,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)]
