自定义可迭代类

本文介绍了如何在Python中创建自定义的可迭代类,详细阐述了迭代器协议的实现,包括`__iter__`和`__next__`方法的使用,通过实例展示了如何为自定义数据结构提供迭代能力。
摘要由CSDN通过智能技术生成
# 1.Iterable: 可迭代;
#  定义 __iter__();  (返回一个迭代器)  那么这个对象就可以for循环
#
# 2.Iterator: 定义迭代器;
#  定义 __iter__();  (返回一个迭代器)
#  定义 __next__();  (返回迭代器中的下一个值,没有了抛出异常,注意索引值)

from collections import Iterable  # 判断是否可迭代
from collections import Iterator  # 判断是否是迭代器

# 自定义一个可迭代类  : 某个属性是一个列表
class StudentList(object):
    # 自定义一个属性,将来让他们遍历这个属性
    def __init__(self):
   		self.items = []
    
    # 能够向里面添加数据
    def append_student(self, stu_name):
    	self.items.append(stu_name)

    #  定义 __iter__();  (返回一个迭代器)
    def __iter__(self):
	    # 只要我们再创建一个迭代器,就OK了
	    tor = StudentIterator(self.items)  # 参数是要遍历(迭代)的对象
	    print('StudentIterator创建出来的对象', isinstance(tor, Iterator),'迭代器')
	    return tor

# 2.Iterator: 定义迭代器;
#  重写 __iter__();  (返回一个迭代器)
#  重写 __next__();  (返回迭代器中的下一个值,没有了抛出异常,注意索引值)

class StudentIterator(o
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用std set容器时,如果要处理自定义型的元素,我们需要定义一个比较函数(仿函数)来指定排序规则。如果我们想要创建一个const iterator(指向const值的迭代器),我们可以通过定义一个const set来实现。const iterator允许我们遍历容器,但不能用来修改所指向的值。 与此似,如果我们想要创建一个const set来存储自定义型的元素,并且希望按照特定的排序规则进行排序,我们需要定义一个比较函数(仿函数)来传递给set构造函数。这样,在插入元素时,set容器会自动根据比较函数的规则进行排序。 对于set容器,我们可以使用insert()函数向容器中插入元素,使用erase()函数删除元素,使用clear()函数清除所有元素。插入和删除操作都可以使用迭代器来指定要操作的位置。 总结起来,当我们在使用std set容器处理自定义型的元素时,我们需要定义一个比较函数(仿函数)来指定排序规则,并且可以使用const iterator来遍历容器中的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【C++】集合(set与multiset)的使用及set自定义型排序](https://blog.csdn.net/AAADiao/article/details/130972036)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [C++:set容器自定义数据型的自定义排序](https://blog.csdn.net/prolop87/article/details/124364102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值