关于py3中zip函数

今天跟着《Python数据处理》一书敲代码,因为书上是py2的案例,但是自己的环境是py3的,所以就遇到了一些语法特性上的问题,今天发现一个py3中关于zip()函数有趣的地方,希望可以得到高人的解答:

a = ['1', '2', '3', '5']
b = ['a', 'v', 'd', 'r']
str = zip(a, b)
print(list(str))
print([t[0] + ' ' + t[1] for t in list(str)])

在敲上述代码的时候发现后者的输出是[],如下图所示:
这里写图片描述
后来经过好久的尝试,就是无法使下面的结果不是空列表,直到一次尝试发现重复两次的print(list(str))也会出现空列表的现象:
这里写图片描述
这里好像可以观察到一个现象,str在经过一次list之后里面的内容好像就被清空,在使用list(str)之前不要list它就可以成功调用str里面的内容:
这里写图片描述
py2因为返回的直接就是list变量,所以就没有这个问题,貌似是py3独有的。

关于上述问题,在一个博客中找到了,答案搬运工:https://www.cnblogs.com/linshuhui/p/8982411.html
关于生成器的解释:https://www.jb51.net/article/97214.htm

猜你喜欢

转载自blog.csdn.net/weixin_38868003/article/details/80765103
今日推荐