Python 使用'x,y'列出理解与打印结果
我想知道为什么我会得到以下输出: 邮政编码为[2,5],[4,3]的x,y的Python 使用'x,y'列出理解与打印结果,python,loops,list-comprehension,Python,Loops,List Comprehension,我想知道为什么我会得到以下输出: 邮政编码为[2,5],[4,3]的x,y的: 打印(x) 打印('你好') 打印(y) 输出: 2 你好 4. 5. 你好 3. 虽然我期望输出为: 2 你好 5. 4. 你好 3. 因为我运行的是x,y,但出于某种原因,它会打印出所有x,然后是所有y。任何解释?zip按顺序运行输入项,这意味着zip(x,y,…)将访问以下项: x[0], y[0], ... x[1], y[1], ... x[2], y[2], ... x[3], y[3], ...
:
打印(x)
打印('你好')
打印(y)
输出:
2
你好
4.
5.
你好
3.
虽然我期望输出为:
2
你好
5.
4.
你好
3.
因为我运行的是
x,y
,但出于某种原因,它会打印出所有x
,然后是所有y
。任何解释?zip
按顺序运行输入项,这意味着zip(x,y,…)
将访问以下项:
x[0], y[0], ...
x[1], y[1], ...
x[2], y[2], ...
x[3], y[3], ...
...
它将以该模式继续,直到完成最短的输入
在您的示例中,x=[2,5]
和y=[4,3]
zip()函数返回一个zip对象,它是一个元组迭代器,其中每个传递的迭代器中的第一项成对在一起,然后每个传递的迭代器中的第二项成对在一起
因此,在您的示例中,最初运行的是:2,4。在3和5的第二次迭代中,您得到的输出与
zip
的工作方式一致-将“zip”视为“zipper”。要获得您想要的序列,您最好使用iterools.chain
:
from itertools import chain
for x in chain([2,5],[4,3]):
print(x)
print('hello')
你知道
zip
做什么吗?如果你省略zip
,你会得到预期的输出,那么你认为zip
做什么呢?
2
hello
5
hello
4
hello
3
hello