for <variable> in <sequence>: <statements> else: <statements>
使用规范
1 2 3 4
#!/usr/bin/python3 languages = ["C", "C++", "Perl", "Python"] for x in languages: print(x)
1 2 3 4
C C++ Perl Python
break
for 循环中使用了 break 语句,break 语句用于跳出当前循环体。
1 2 3 4 5 6 7 8 9 10
#!/usr/bin/python3 sites = ["baidu", "google", "hibiscidai", "taobao"] for site in sites: if site == "hibiscidai": print("hibiscidai") break print("循环数据" + site) else: print("没有循环数据!") print("完成循环!")
1 2 3 4
循环数据baidu 循环数据google hibiscidai 完成循环!
range()
如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列。
1 2 3 4 5 6 7 8
>>> for i inrange(5): print(i)
0 1 2 3 4
使用range指定区间的值
1 2 3 4 5 6 7
>>> for i inrange(5,9) : print(i)
5 6 7 8
使range以指定数字开始并指定不同的增量(甚至可以是负数,有时候也叫作”步长”)
1 2 3 4 5 6 7
>>> for i inrange(0, 10, 3) : print(i)
0 3 6 9
负数
1 2 3 4 5 6
>>> for i inrange(-10, -100, -30) : print(i)
-10 -40 -70
结合range()和len()函数以遍历一个序列的索引
1 2 3 4 5 6 7 8 9
>>> a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ'] >>> for i inrange(len(a)): print(i, a[i])
0 Google 1 Baidu 2 Runoob 3 Taobao 4 QQ
使用range()函数来创建一个列表
1 2
>>> list(range(5)) [0, 1, 2, 3, 4]
break和continue
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
def__next__(self): if self.n < self.max: r = self.b self.a, self.b = self.b, self.a + self.b self.n = self.n + 1 return r raise StopIteration()
for n in fab(5): print(n)
1 2 3 4 5
1 1 2 3 5
代码复杂
使用yield输出斐波那契數列前 N 个数
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/python3
deffab(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1
for n in fab(5): print(n)
1 2 3 4 5
1 1 2 3 5
yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。