x,y,z = [1,2,3], [4,5,6], [7,8,9]
for a,b,c in x,y,z:
print(a,b,c)
Run Code Online (Sandbox Code Playgroud)
输出是:
1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)
我无法在心理上导航这里发生的任何逻辑来产生这个输出.我知道zip函数使这段代码以我明确想要的方式运行; 但我只是试图理解为什么它不使用zip函数时这样工作.
这是一个有意识的功能,一个功能,你可以通过这种方式连续迭代多个列表?有点?
你已经有了很好的答案,但我认为考虑这种等效的变化将有助于使它更清晰:
x,y,z = [1,2,3], [4,5,6], [7,8,9]
for t in x,y,z:
a, b, c = t
print(a,b,c)
Run Code Online (Sandbox Code Playgroud)
你不会感到惊讶的是t连续绑定x,y并且z,对不对?在您的原始代码中发生了完全相同的事情,除了:
a, b, c = t
Run Code Online (Sandbox Code Playgroud)
部分不那么明显.
噢,这是一团糟.这太过于使用了python的可迭代解包.该声明a, b, c = iterable只是分配的元素iterable的变量a,b和c.在这种情况下iterable必须有3个元素.
首先你有:
x,y,z = [1,2,3], [4,5,6], [7,8,9]
# Which is:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
那么你有:
for a, b, c in x, y, z:
print(a, b, c)
# Which is:
temp = (x, y, z)
for item in temp:
a = item[0]
b = item[1]
c = item[2]
print(a, b, c)
Run Code Online (Sandbox Code Playgroud)
还有一点需要注意的是,声明与之mytuple = 1, 2, 3相同mytuple = (1, 2, 3).
| 归档时间: |
|
| 查看次数: |
204 次 |
| 最近记录: |