1 a = [i+1 for i in range(10)] 2 print(a)#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1 a = (i+1 for i in range(10)) 2 print(a)#<generator object <genexpr> at 0x0000000001E0B8E0> 3 print(next(a))#1 4 print(next(a))#2 5 print(next(a))#3
1 a = (i+1 for i in range(10)) 2 print(a)#<generator object <genexpr> at 0x0000000001E0B8E0> 3 for i in a: 4 print(i)
1 #斐波拉契数列 2 def fib(max): 3 n,a,b = 0,0,1 4 while n < max : 5 yield(b)#把函数的执行过程冻结在这一步,并且把b的值,返回给外面的next() 6 a,b = b,a+b 7 n += 1 8 return "DONE" 9 a = fib(5) 10 print(fib(5))#<generator object fib at 0x0000000001DEB8E0>
1 from collections import Iterable 2 print(isinstance([],Iterable))#True 3 print(isinstance({},Iterable))#True 4 print(isinstance("abc",Iterable))#True 5 print(isinstance((x for x in range(10)),Iterable))#True 6 print(isinstance(100,Iterable))#False
isinstance()
判断一个对象是否是Iterator
对象:1 from collections import Iterator 2 print(isinstance([],Iterator))#False 3 print(isinstance({},Iterator))#False 4 print(isinstance("abc",Iterator))#False 5 print(isinstance((x for x in range(10)),Iterator))#True 6 print(isinstance(100,Iterator))#False
解释:python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIeteration错误。可以把这个数据流看做是一个有序序列,但我们却不能提前直到序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的
1 from collections import Iterator 2 print(isinstance(iter([]),Iterator))#True 3 print(isinstance(iter("abc"),Iterator))#True
原文地址:http://www.cnblogs.com/GraceZ/p/7956201.html