自学Python之路-Python基础+模块+面向对象
自学Python之路-Python网络编程
自学Python之路-Python并发编程+数据库+前端
自学Python之路-djangohtml
以前所讲的可使用for循环:前端
print(dir([])) 告诉咱们列表拥有的全部方法 , 其中有双下划线的为双下方法
print(dir("")) 告诉咱们字符串拥有的全部方法
print([1].__add__([2])) print([1]+[2]) # 同以上,python内部算法执行就是_add_
迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到全部的元素被访问完结束。python
迭代器只能往前不会后退,不过这也没什么, 由于人们不多在迭代途中日后退。算法
另外,迭代器的一大优势是不要求事先准备好整个迭代过程当中全部的元素。数据库
迭代器仅仅在迭代到某个元素时才计算该元素,而在这以前或以后,元素能够不存在或者被销毁。这个特色使得它特别适合用于遍历一些巨大的或是无限的集合,好比几个G的文件(cat就是迭代器形式,读一行显示一行)django
特色:编程
1. 生成一个迭代器(在Python3.0中)网络
others = iter(['carlos','gary','tong','rain']) #iter表明生成的是个迭代器 print(others) #输出结果为<list_iterator object at 0x01E96650>表示为迭代器 print(others.__next__()) print(others.__next__()) print(others.__next__()) print(others.__next__()) # 迭代器只有4个元素,若是超过迭代器元素的数量继续迭代的话,它会自动返回“StopIteration”的信息
输出:并发
carlos
gary
tong
rain函数
2. for在iter迭代器中的实例(利用for 循环取出iter中每一个元素)
obj = iter([11,22,33,44,55,66,77,88,99,90]) for n in obj: #利用for 循环取出iter中每一个元素。 print(n)
输出:
11
22
33
44
55
66
77
88
99
90
3. 迭代器的循环能够避开索引,但有时候须要索引来进行一些操做。内建函数enumerate,它能在iter函数的结果前加上索引,以元组返回。
obj =iter(['carlos','gary','jack','rain']) for i in enumerate(obj): print(i)
输出:
(0, 'carlos')
(1, 'gary')
(2, 'jack')
(3, 'rain')
4. while 在iter函数中应用
obj = iter([11,22,33,44,55,66,77,88,99,90]) while True: #while循环的话判断为真,赋一个变量。而后把每次经过obj.__next__()的结果赋值给变量打印出来。当循环超过iter中的值后条件就为Talse,那么就会报StopIteration的错误 val = obj.__next__() print(val)
输出:
11
22
33
44
55
66
77
88
99
90
Traceback (most recent call last):
File "D:/PyCharm Community Edition 2016.3.2/aaaa.py", line 20, in <module>
val = obj.__next__()
StopIteration
5. 分析迭代器内存开销
#把文件一次加载到内存中,而后逐行打印。当文件很大时,这个方法的内存开销就很大了 * / for line in open("test.txt").readlines(): print line #这是最简单也是运行速度最快的写法,他并没显式的读取文件,而是利用迭代器每次读取下一行 * / for line in open("test.txt"): # use file iterators print line
补充: