'''
总结:
Iterable: 可迭代对象,有__iter__()方法
Iterator: 迭代器,有__iter__()和__next__()方法
迭代器的特点:
1.节省内存。
2.惰性机制。
3.不能反复,只能向下执行。
'''
str1 = "hello"
for s in str1:
print(s)
'''
h
e
l
l
o
'''
int1 = 123
for i in int1:
print(i) # TypeError: 'int' object is not iterable
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-8c7f77a7214a> in <module>()
1 int1 = 123
----> 2 for i in int1:
3 print(i) TypeError: 'int' object is not iterable
'''dir函数'''
dir(list)
['__add__',
'__class__',
'__contains__',
'__delattr__',
'__delitem__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__gt__',
'__hash__',
'__iadd__',
'__imul__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__reversed__',
'__rmul__',
'__setattr__',
'__setitem__',
'__sizeof__',
'__str__',
'__subclasshook__',
'append',
'clear',
'copy',
'count',
'extend',
'index',
'insert',
'pop',
'remove',
'reverse',
'sort']
print("__iter__" in dir(int))  # False
print("__iter__" in dir(bool)) # False
print("__iter__" in dir(str)) # True
print("__iter__" in dir(list)) # True
print("__iter__" in dir(set)) # True
print("__iter__" in dir(tuple)) # True
print("__iter__" in dir(dict)) # True
'''isinstance()函数可以查看一个对象是什么类型
iterable 迭代对象
iterator 迭代器
'''
lst = ["apple", "banana", "orange"]
lst_iter = lst.__iter__() # 迭代对象.__iter__()会生成一个迭代器
from collections import Iterable, Iterator
print(isinstance(lst, Iterable)) # True
print(isinstance(lst_iter, Iterable)) # True
print(isinstance(lst, Iterator)) # False
print(isinstance(lst_iter, Iterator)) # True
str1 = "hello"
str_iter = str1.__iter__()
print(str_iter.__next__()) # 迭代器有next方法,如果拿完数据,再执行next会报StopIteration,返回结果:h
print(str1.__next__()) # 迭代对象没有next方法
h
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-18-56c2a1c77dc2> in <module>()
2 str_iter = str1.__iter__()
3 print(str_iter.__next__())
----> 4 print(str1.__next__()) AttributeError: 'str' object has no attribute '__next__'
'''for循环机制'''
for i in [1, 2, 3]:
print(i)
1
2
3
'''使用while循环+迭代器来模拟for循环'''
lst = [1, 2, 3]
lst_iter = lst.__iter__()
while 1:
try:
print(lst_iter.__next__())
except StopIteration:
break
1
2
3
'''list可以一次性把迭代器中的内容拿空,并装载在一个新列表中'''
str1 = "hello".__iter__()
print(list(str1)) # ['h', 'e', 'l', 'l', 'o']

python3 迭代器的更多相关文章

  1. Python3+迭代器与生成器

    转载Python3 迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素 ...

  2. python014 Python3 迭代器与生成器

    Python3 迭代器与生成器迭代器迭代是Python最强大的功能之一,是访问集合元素的一种方式..迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结 ...

  3. python3 迭代器(Iterator)和生成器(generator)

    一.迭代器定义: 迭代是访问集合元素的一种方式,迭代器是一个可以记住遍历位置的对象: 集合数据类型如list.dict.str等是Iterable但不是Iterator,不过可以通过iter()函数获 ...

  4. Python3迭代器与生成器

    迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退 ...

  5. python3: 迭代器与生成器(1)

    1. 手动遍历迭代器 你想遍历一个可迭代对象中的所有元素,但是却不想使用for循环. >>> items = [1, 2, 3] >>> # Get the ite ...

  6. python3迭代器和生成器

    1.手动访问迭代器中的元素 #要手动访问迭代器中的元素,可以使用next()函数 In [3]: with open('/etc/passwd') as f: ...: try: ...: while ...

  7. Python3 迭代器和生成器

    想要搞明白什么是迭代器,首先要了解几个名词:容器(container).迭代(iteration).可迭代对象(iterable).迭代器(iterator).生成器(generator). 看图是不 ...

  8. Python3 迭代器,生成器,装饰器

    1.迭代器 迭代器有两个基本方法,iter()和next(),next()完成后会引发StopIteration异常 a='abcdef' b=iter(a) #创建迭代器对象 print(type( ...

  9. python3 迭代器,生成器

    一 .什么是迭代 1. 重复 2.下次重复一定是基于上一次的结果而来 while True: cmd=input(':') print(cmd) l=[1,2,3,4] count=0 while c ...

随机推荐

  1. select2 插件加载后端数据

    //html <select class="form-group form-control" name="roomId" id="roomLis ...

  2. es6 语法 (类与对象)

    { // 基本定义和生成实例 class Parent{ constructor(name='mukewang'){ this.name=name; } } let v_parent1=new Par ...

  3. 定时任务Crontab

    0.基本概念 & 实现原理  定时任务基本概念: 调度器:负责管理Quartz应用运行时环境,用于调度定时任务. 定时任务:按照某种时间规则,被调度的任务. a.从有无状态来说,有以下两种: ...

  4. Android项目实战(四十三):夜神模拟器

    一.下载模拟器到电脑 夜神模拟器 二.环境配置 计算机--系统--高级系统设置--环境变量 PATH 里面加入夜神模拟器的安装目录下的bin文件 三.启动模拟器 四.运行cmd命令,cd到夜神安装目录 ...

  5. Kotlin入门(27)文件读写操作

    Java的文件处理用到了io库java.io,该库虽然功能强大,但是与文件内容的交互还得通过输入输出流中转,致使文件读写操作颇为繁琐.因此,开发者通常得自己重新封装一个文件存取的工具类,以便在日常开发 ...

  6. Node.js学习起步

    Node.js学习: 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱 ...

  7. 复杂的字符串数组解析:{"setting":"简单:10:5,一般:5:10,困难:2:20"},使用split多次截取

    "[0,{"id":563,"name":"测试题1","dscr":null,"picId&quo ...

  8. django重定向

    return HttpResponseRedirect('/index/')# 重定向返回url格式:http://127.0.0.1:8000/index/会去掉前期的所有路由重新写入/index/ ...

  9. Linux: 软件包管理之rpm与yum [转]

    软件包的安装和卸载时很平常的事,但在Linux上面却不简单..Linux的其中一个哲学就是一个程序只做一件事,并且做好.组合小程序来完成复杂的任务,这样做有很多好处,但是各个小程序之间往往会存在着复杂 ...

  10. JavaScript -- 时光流逝(四):js中的 Math 对象的属性和方法

    JavaScript -- 知识点回顾篇(四):js中的 Math 对象的属性和方法 1. Math 对象的属性 (1) E :返回算术常量 e,即自然对数的底数(约等于2.718). (2) LN2 ...