课堂练习
# 自定义生成器对标range功能(一个参数 两个参数 三个参数 迭代器对象)# for i in range(1, 10):# print(i)# 1.先写两个参数的# 2.在写一个参数的# 3.最后写三个参数defmy_range(start_num,end_num=None, step=1):
# 判断end_num是否有值 没有值说明用户只给了一个值 起始数字应该是0 终止位置应该是传的值ifnot end_num:
end_num = start_num
start_num = 0while start_num < end_num:
yield start_num
start_num += step
res = my_range(1,10).__iter__()
whileTrue:
try:
i = res.__next__()
print(i)
except StopIteration:
breakfor i in my_range(11):
print(i)
for i in my_range(2,11):
print(i)
for i in my_range(5):
print(i)
# 说白了就是生成器的简化写法# l1 = [i ** 2 for i in range(100)]# print(l1)
l1 = (i**2for i inrange(10)) # 生成器对象print(l1) # <generator object <genexpr> at 0x0000023A08233C50>for i in l1:
print(i) # 0 1 4 9 16 25 36 49 64 81
"""
面试题(有难度)
大致知道流程即可
"""defadd(n, i): # 普通函数 返回两个数的和 求和函数return n + i
deftest(): # 生成器for i inrange(4):
yield i
g = test() # 激活生成器for n in [1, 10]:
g = (add(n, i) for i in g)
"""
第一次for循环
g = (add(n, i) for i in g)
第二次for循环
g = (add(10, i) for i in (add(10, i) for i in g))
"""
res = list(g)
print(res)
#A. res=[10,11,12,13]#B. res=[11,12,13,14]#C. res=[20,21,22,23]#D. res=[21,22,23,24]'''不用深入研究 大致知道起始数即可'''
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗