迭代器,生成器

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)
复制代码

 

posted @   莫~慌  阅读(15)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示