自定义列表

“”"
1、MyList类
1)初始化方法
2)iter() 方法,对外提供迭代器
3)addItem() 方法,用来添加数据

2、自定义迭代器类:MyListIterator

  1. 初始化方法
    2)迭代器方法 iter()
  2. 获取下一个元素值的方法 next()

目标:
mylist = MyList()
for value in mylist:
print(value)

“”"

1、MyList类

class MyList(object):
    # 1)初始化方法
    def __init__(self):

    # 定义实例属性,保存数据
    self.items = []

# 2)__iter__() 方法,对外提供迭代器
def __iter__(self):

    # 创建MyListIterator 对象
    mylist_iterator = MyListIterator(self.items)
    # 返回迭代器
    return mylist_iterator

# 3)addItem() 方法,用来添加数据
def addItem(self, data):
    # 追加保存数据
    self.items.append(data)
    print(self.items)

2、自定义迭代器类:MyListIterator

class MyListIterator(object):
    # 1) 初始化方法
    def __init__(self, items):

    # 定义实例属性,保存MyList类传递过来的items
    self.items = items

    # 记录迭代器迭代的位置
    self.current_index = 0
# 2)迭代器方法 __iter__()
def __iter__(self):
    pass
# 3) 获取下一个元素值的方法 __next__()
# next(mylist_iterator) 就会调用 __next__() 方法
def __next__(self):

    # 1、 判断当前的下标是否越界
    if self.current_index < len(self.items):
    #     1)根据下标获取下标对应的元素值
        data = self.items[self.current_index]
    #     2)下标位置 +1
        self.current_index += 1
    #     3)返回下标对应的数据
        return data

    #  如果越界,直接抛出异常
    else:

        # raise 用于主动抛出异常
        # StopIteration 停止迭代
        raise StopIteration


if __name__ == '__main__':
    # 1、创建自定义列表对象
    mylist = MyList()
    mylist.addItem("张飞")
    mylist.addItem("关羽")
    mylist.addItem("班长")
    mylist.addItem("xxxxx")

# 遍历
# 1) iter(mylist) 获取 mylist对象的迭代器  --> MyList --> __iter__()
# 2)next(迭代器) 获取下一个值
# 3)捕获异常
for value in mylist:
    print("name:", value)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值