end关键字用于控制输出不换行或在末尾添加其他字符
a={'c', 'd', 'b', 'a', 'r'}
for i in a:
print(i,end=',')
d,c,b,a,r,
range(n)产生0到n-1的数字
range(a,b)产生a到b-1的数字
range(a,b,c)产生a到b-1内以步长为c的数字
这两个关键字和c++类似用于控制循环的跳出或者提前结束本次循环
pass 是条空语句用于保存python3代码结构的完整性
Python3的条件控制格式为:
if 条件: ... else:...
或:
if 条件1:...elif 条件2:...elif 条件3:...else:...
while 条件:
语句
或
for 变量 in 范围:
语句
不同的是这两个循环控制都可以后接else:语句
迭代器是用于遍历集合元素的对象,这个对象可以记住当前遍历元素的位置
该迭代器只会往前遍历元素不会往后遍历,字符串,列表,元组,字典都可以创建迭代器
迭代器有两个基本方法,iter()和next(),其中it=iter(list)用于生成迭代器,而next(it)用于向后迭代
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象
for x in it:
print (x, end=" ")
1 2 3 4
生成迭代器类,我们可以创建一个迭代器类,需要实现两个内置的类函数 __iter__(),和__next__()
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
1
2
3
4
5
为了防止迭代器无限循环可以使用StopIteration异常判定迭代器迭代完成
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)
在 Python 中,使用了 yield 的函数被称为生成器(generator)。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并
在下一次执行 next() 方法时从当前位置继续运行。
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
0 1 1 2 3 5 8 13 21 34 55