>>> for i in "FishC":
print(i)
F
i
s
h
C
>>> links = {'你好':'https://www.123.com',\
SyntaxError: invalid character in identifier
>>> links = {'你好':'https://www.123.com',\
'我好':'https://www.456.com',\
'大家好':'https://www.789.com'}
>>> for each in links:
print("%s -> %s" % (each,links[each]))
你好 -> https://www.123.com
我好 -> https://www.456.com
大家好 -> https://www.789.com
迭代器:
iter()
next()
>>> string = 'FishC'
>>> it = iter(string)
>>> next(it)
'F'
>>> next(it)
'i'
>>> next(it)
's'
>>> next(it)
'h'
>>> next(it)
'C'
>>> next(it)
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
next(it)
StopIteration
#类似的for迭代:
>>> for i in "FishC":
print(i)
F
i
s
h
C
#while循环也可以实现
>>> string = 'FishC'
>>> it = iter(string)
>>> while True:
try:
each = next(it)
except StopIteration:
break
print(each)
F
i
s
h
C
迭代器 魔法方法
iter()
-__iter__() #返回迭代器本身,相当于return self
next()
-__next__() #决定了迭代规则
例子: 下面的例子说明了二者的特性。
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
>>> for each in fibs:
print(each)
1
1
2
3
5
8
13
21
34
55
89
144
......没有设置参数范围,斐波那契数列无限循环下去
修改:限定数列最大值在10以内
class Fibs:
def __init__(self,n=10):
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
>>> fibs = Fibs()
>>> for each in fibs:
print(each)
1
1
2
3
5
8
>>> fibs = Fibs(100) #限定数值在100以内
>>> for each in fibs:
print(each)
1
1
2
3
5
8
13
21
34
55
89