迭代器,生成器
1. 使用while循环+异常处理+迭代器对象,完成for循环迭代取值的功能
l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
# 1.先将列表用__iter__转换为可迭代对象 inte_l1 = l1.__iter__() # 2.while循环让迭代器对象反复执行__next__()操作 while True: try: print(inte_l1.__next__()) except StopIteration as e: break
2. 自定义生成器对标range功能(一个参数 两个参数 三个参数 迭代器对象)
for i in range(1, 10): print(i)
(1)两个参数的
def my_range(start_num,end_num): while start_num < end_num: yield start_num start_num += 1 res = my_range(1,10).__iter__() while True: try: print(res.__next__()) except StopIteration: break
(2)一个参数的
def my_range(start_num, end_num=None): # 判断end_num是否有值,没有值说明用户只给了一个值,起始数字应该是0,终止位置应该是传的值 if not end_num: end_num = start_num start_num = 0 while start_num < end_num: yield start_num start_num += 1 for i in my_range(10): print(i)
(3)三个参数的
def my_range(start_num, end_num=None, step=2): # 判断end_num是否有值,没有值说明用户只给了一个值,起始数字应该是0,终止位置应该是传的值 if not end_num: end_num = start_num start_num = 0 while start_num < end_num: yield start_num start_num += step for i in my_range(10): print(i)

浙公网安备 33010602011771号