Python基础 | 你应该掌握的generator (一)
  TEZNKK3IfmPf 2023年11月15日 26 0

问题描述


a = [x for x in range(10)]  
b = (x for x in range(10))


你能看出上面两行用python编写的代码有什么区别吗?

如果你能够很快的看出区别,那么恭喜你,你的python基础非常的扎实,如果不能,那么本文对于你来说就非常有价值。

表面上看二者的区别在于,一个使用了中括号[],一个使用了小括号(),但是这两者之间有什么本质的区别呢?


问题分析


首先来看以下中括号的情况:


a = [x for x in range(10)]  
type(a) # list


使用type(a)方法可以查看a的类型是list,这就是平时所说的python的列表类型。

接着来看一下小括号的情况:


b = (x for x in range(10))  
type(b) # generator


可以看到,b的类型是generator。

此时可以看到二者之间的区别,一个是list类型,另外一个是generator类型,但是这二者之间有什么区别呢?接下来将通过案例的形式来展示它们的区别。

设计一个案例,分两次来遍历所有的元素,第一次遍历的循环变量设置为i,第二次遍历的循环变量设置为j,接下来观察它们的区别。

首先还是来看list类型的变量a的情况。



输出:




输出:


上面的输出结果和我们之前理解的一样,没什么不同之处。接下来看一下generator类型的变量b的情况。


for i in b: 
    print(i)


输出:

for j in b: 
    print(j)


结语


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   39   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   28   0   0 python
  TEZNKK3IfmPf   2024年05月31日   35   0   0 excelpython
  TEZNKK3IfmPf   2024年05月31日   31   0   0 python
TEZNKK3IfmPf