前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python每日一谈|No.10.迭代器

Python每日一谈|No.10.迭代器

作者头像
DrugSci
发布2021-03-16 09:12:55
2130
发布2021-03-16 09:12:55
举报
文章被收录于专栏:FindKeyFindKey

迭代器

迭代器呢,是一种对象。。。。

我如何和你们解释对象这个比较抽象的词呢(在某些同学仍然单身的情况下hhh)

言归正传,编程可以分为两类,面向过程的编程,以及面向对象的编程

我们写的一般普通的脚本是面向过程的,因为,处理问题比较简单,应用情景比较单一

但是如果对于比较复杂的操作一般会使用面向对象的编程

当然,你也可以记住一句话

万物皆对象

为了更细致的了解,迭代器,我们先来给他下定义

1.迭代器是可迭代的对象

2.迭代器只能往前不会后退。

3.迭代器有两个基本的方法:iter()next()

4.字符串,列表,元组,字典对象都可用于创建迭代器

5.你也可以使用循环来进行遍历

简而言之,一个字符串,列表或元组被迭代化后,他就变成了一个迭代器类似的存在,迭代器可以进行迭代,且只能向前不能向后

我们看个例子

代码语言:javascript
复制

In [1]: a='abcd'
In [10]: type(b)
Out[10]: str_iterator
In [5]: next(b)
Out[5]: 'a'
In [6]: next(b)
Out[6]: 'b'
In [7]: next(b)
Out[7]: 'c'
In [8]: next(b)
Out[8]: 'd'
In [9]: next(b)
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-9-adb3e17b0219> in <module>
----> 1 next(b)
# 当然列表,元祖也基本一致
In [11]: a = [1,2,3,4]
In [12]: b = iter(a)
In [13]: print(b)
<list_iterator object at 0x7fc9b8337ed0>
In [14]: next(b)
Out[14]: 1
In [15]: next(b)
Out[15]: 2
In [16]: next(b)
Out[16]: 3
In [17]: next(b)
Out[17]: 4
In [18]: next(b)
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-18-adb3e17b0219> in <module>
----> 1 next(b)
#当然,如果是字典的话
In [19]: a={'b':1,'c':2}
In [20]: iter(a)
Out[20]: <dict_keyiterator at 0x7fc9b8331170>
In [21]: d = iter(a)
In [22]: next(d)
Out[22]: 'b'
In [23]: next(d)
Out[23]: 'c'
In [24]: next(d)
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-24-9b2daf1403f5> in <module>
----> 1 next(d)
StopIteration:
 
# 使用循环来进行遍历
In [20]: b = (i for i in range(0,10))
In [21]: for i in b:
    ...:     print(i)
    ...:
0
1
2
3
4
5
6
7
8
9

那其实现在,我们就有一个问题,为什么要用迭代器呢?

话说直接使用for,while循环遍历他不香吗?

一方面,同学们要了解,迭代的思想和精髓呀,这个你们高中老师就教过了,我就不教了,我们下一谈来直接写一个看看。

第二方面,迭代器所占的内存更小,我们看个例子

代码语言:javascript
复制

In [33]: import sys

In [34]: a = [1,2,3,4,5]

In [35]:  print(sys.getsizeof(a))
112

In [36]: b = iter(a)

In [37]: print(sys.getsizeof(b))
64

#这里我们使用两种方式创建了a,这个列表,一种是正常方式
#一种是正常方式,在正常方式下,a所占的内存为112字节
#一种是迭代器方式,a所占的内存的为64字节

所以,迭代器比较香是因为它占据的内存比较小

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FindKey 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档