1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 # Author:woshinidaye
4
5 # for i in range(10):
6 # print(i)
7
8 # a = []
9 # for i in range(10):
10 # a.append(i*2)
11 # print(a)
12 # b = [i**i for i in range(10)] #列表生成式
13 # print(b)
14
15 # #如果一个列表的数量特别大,而且是有一定规律的,一次性全部写出来有点浪费空间,可以把这种有规律的搞成一个生成器,generator
16 # l = [i for i in range(1000)]
17 # print(l,'\n------>>',type(l))
18 # g = (i for i in range(1000))
19 # print(g,'\n------>>',type(g))
20 # for i in g:
21 # if i > 100 and i <120:
22 # print('====>',i)
23 # print(l[100])
24 # # print(g[100]) #会报错,因为没有下标,他是从头往后计算,没有前面的数值,后面就没有生成
25
26 # def feb(max):
27 # n,a,b=0,0,1
28 # while n < max:
29 # print(b)
30 # a,b = b,a+b #a=b , b= a+b a,b = c,d 表示 a=c 、b =d
31 # # print('===>>',b)
32 # n = n +1
33 # return 'done'
34 # feb(10)
35
36 # #变成generator!!!!!!
37 # def feb(max):
38 # n,a,b=0,0,1
39 # while n < max:
40 # # print(b)
41 # yield b
42 # a,b = b,a+b #a=b , b= a+b a,b = c,d 表示 a=c 、b =d
43 # # print('===>>',b)
44 # n = n +1
45 # return '404' #函数执行完了才会返回值,这里可以用到异常情况时的返回值
46 # print(feb(10)) #<generator object feb at 0x00000185B6329580>
47 # for i in feb(10):
48 # print(i)
49 # f = feb(100)
50 # while True:
51 # try:
52 # x = next(f)
53 # print('f:',x)
54 # except StopIteration as e:
55 # print('错误了', e.value)
56 # break
57
58 # #yield实现并行效果,单进程
59 # import time
60 # def consumer(name):
61 # print('%s 准备吃包子' %name)
62 # while True:
63 # baozi = yield #yield 是保存当前状态,然后直接返回,下一次调用从这里开始。
64 # print('%s 包子来了,被%s吃了' %(baozi,name))
65 # # c = consumer('woshinidaye')
66 # # print(type(c))
67 # # c.__next__()
68 # # c.send('xianrou') #send可以给yield传值。。
69 # def producer(pro):
70 # c = consumer('woshinidaye')
71 # c.__next__()
72 # print('我要开始做包子了!!!!!!')
73 # for i in range(1000):
74 # # time.sleep(2)
75 # print('%s 做了一个包子' %pro)
76 # c.send('第%s个' %(i+1))
77 # producer('test')
78
79 a = 'rtfyugihi'
80 for i in a :
81 print(i)
82 #能用于for巡检的数据类型:一类是集合数据类型list tuple str dict set ,另一类是生成器
83 #可循环的对象统称为Iterable,可迭代对象
84 #可以被next()函数调用并不断返回下一个值的对象成为迭代器:Iterator
85 from collections.abc import Iterator
86 print(isinstance('qwrwq',Iterator))
87 print(isinstance([],Iterator))
88 print(isinstance((i for i in range(10)),Iterator))
89 #可以将list set dict 等Iterable变成Iterator,使用iter()函数
90 print(isinstance(iter('rtyguh'),Iterator))
91 for i in iter('rdtygu'):
92 print(i)