自定义生成器对标range功能(一个参数 两个参数 三个参数 迭代器对象)
for i inrange(1, 10):
print(i)
1.先写两个参数的
2.再写一个参数的
3.最后写三个参数
# 1.生成器# 两个参数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__()# while True:# try:# i = res.__next__() # for i in range(1, 10): print(i)# print(i)# except StopIteration:# break# for i in my_range(100):# print(i)# for i in my_range(1, 10):# print(i)# for i in my_range(10):# print(i)for i in my_range(100, 50, -1):
print(i)
# for i in range(100, 50, -1):# print(i)
说白了就是生成器的简化写法
# l1 = [i ** 2 for i in range(100)]# print(l1)
l1 = (i ** 2for i inrange(100)) # 生成器对象print(l1) # <generator object <genexpr> at 0x000001DFC07F7E40>for i in l1:
print(i)
"""
面试题(有难度)
大致知道流程即可
"""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 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性