#coding=utf-8"""1、列表生成式
"""list1 = [i for i in range(10)]
print list1
"""生成器 generator 只有在呼叫的時候才會生成相應的數值、只記錄當前位置,
只有乙個__next__方法.python2.7裡面是next()一般不用此方法,會使用for迴圈來遍歷生成器
"""list1 = (i for i in range(10))
print list1##
# a= 1
# b=2
# a,b = b,a+b
# #相當於
# t = (b,a+b)
# a = t[0]
# b = t[1]
#生成器函式例項
def fib(value):
i,j,z = 0,0,1
while i < value:
yield z
j,z = z, j+z
i +=1
# return "end" python2中不支援return
# fiber = fib(10)
# fiber.next()
# fiber.next()
# fiber.next()
#生成器並行的例項
import time
def consumer(name):
print ("%s 準備"%name)
while true:
i = yield
print ("%s is coming %s please ready"%(i,name))
a = consumer("liming")
a.next()
a.next()
def product():
people1 = consumer("xiaoming")
people2 = consumer("xiaohua")
people1.next()
people2.next()
print ("接下來我準備發球了")
for i in range(10):
time.sleep(3)
print ("發球了")
people1.send("第"+str(i)+"顆球")
people2.send("第"+str(i)+"顆球")
#product()
#可迭代的資料型別 列表 、元組、字典、集合、字串 還有生成器,
#可迭代物件又稱iterable 可以使用isinstance判斷乙個物件是否是某個物件
#可以使用for迴圈遍歷的物件稱為可迭代物件,
#可以被next()函式呼叫,並不斷返回下乙個值的物件稱為迭代器 iterator
from collections import iterable,iterator
print isinstance(,iterable) #判斷迭代物件
isinstance(,iterator) #判斷迭代器
print isinstance([i for i in range(10)],iterator)
print isinstance((i for i in range(10)),iterator) #注意兩個的區別
#把可迭代物件變成迭代器,之後就可以使用next()函式了
i = iter([i for i in range(10)])
print "iter()函式",isinstance(i,iterator)
list = [i for i in range(100) if i/2!=0]
print list
迭代器與生成器
可迭代物件 可以直接作用於for迴圈的物件 統稱為可迭代物件 返回迭代器的物件 即iterable。一是集合資料型別,如list tuple dict set str等 二是generator,包括生成器和帶yield的generator function。容器 簡單來說 容器是一系列元素的集合 容...
生成器與迭代器
迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和 next 字串,列表或元組物件都可用於建立迭代器 list 1,2,3,...
生成器與迭代器
通過列表推導式,可以直接建立乙個列表,但是收到記憶體限制,列表容量肯定是有限的而且,建立乙個包含100萬個元素的列表,占用很大的儲存空間。如果我們僅僅需要訪問前面幾個元素,後面 後面元素的占用儲存空間就被浪費 所以,如果列表元素可以按照某種演算法算出來,那我們就可以再迴圈當中不斷地推導它,生成元素,...