魔术方法:迭代器

魔术方法:迭代器学习笔记

迭代说人话就是循环
iter():iter()
next():next()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
>>> str = "asdfsadf"
>>> it = iter(str)
>>> next(it)
'a'
>>> next(it)
's'
>>> next(it)
'd'
>>> while True:
try :
each = next(it)
except StopIteration:
break
print(each)


f
s
a
d
f
```

e.g.
self.a,self.b = self.b,self.a+self.b 可以理解成:
temp_1 = self.b
temp_2 = self.a + self.b

self.a = temp_1
self.b = temp_2

斐波那契数列:

class fibs:
def init(self):
self.a = 0
self.b = 1
def iter(self):
return self
def next(self):
self.a,self.b = self.b,self.a+self.b
return self.a

f = fibs()
for each in f:
if each < 50:
print(each)
else:
break

1
1
2
3
5
8
13
21
34

1
改良:

class fibs:
def init(self,n=50):
self.a = 0
self.b = 1
self.n = n
def iter(self):
return self
def next(self):
self.a,self.b = self.b,self.a+self.b
if self.a > self.n:
raise StopIteration
return self.a

f = fibs()
for each in f:
print(each)

1
1
2
3
5
8
13
21
34

f = fibs(100)
for each in f:
print(each)

1
1
2
3
5
8
13
21
34
55
89
`