Python——基本的序列和映射规则
来源:互联网 发布:好看的手机壁纸软件 编辑:程序博客网 时间:2024/06/10 11:51
在Python中有一些类似于init的特殊方法,例如:getitem(self,key)、setitem(self,key,value)、len(self)、delitem(self,key)等。
len(self):返回集合中所含项目的数量,若是序列返回的是元素的个数,若是映射关系集合,返回的则是键值对的数量。
getitem(self,key):返回键对应的值,若对象是一个序列,键是一个0—N-1的整数,若是映射关系,键可以是任何数据类型。
setitem(self,key,value):存储键对应的值,通过getitem_(self,key)方法可以访问该值。
delitem(self,key):删除键对应的元素值。
案例如下:自定义一个序列类型,在序列初始化的时候可以指定增量的步长,当向列表查询元素时,getitem函数会首先判断查询的下标是否是整型元素,若不是则会则会报类型错误。若是整型元素且该下标对应的值存在于列表中则会输出该元素值,若不在列表中则会根据规定的计算规则计算该下标索引对应的元素值并记录到列表索引对应的位置。
# _*_ coding:utf-8 _*___metaclass__=typedef checkIndex(index): if not isinstance(index,(int)): raise TypeError if index < 0: raise IndexError class creatSeq: def __init__(self,start=0,step=1): self.start=start self.step=step self.seq={} def __getitem__(self,index): checkIndex(index) try: return self.seq[index] except KeyError: return self.start+index*self.step def __setitem__(self,index,value): checkIndex(index) self.seq[index]=value运算结果:=========RESTART:C:\Users\Mr_Deng\Desktop\test.py=========>>> s=creatSeq(1,2)>>> s[5]11>>> s[5]=5>>> s[5]5>>>
有时 我们需要自定一个数据类型,但是为了避免全部重新编写代码可以直接使用现有的数据类型,既通过super操作和上面所说的基本序列和映射规则来增加自定义操作。例如,记录list表中元素访问的次数,可以通过super继承list,并在getitem的操作中记录元素被访问的次数,案例如下:
# _*_ coding:utf-8 _*___metaclass__=typeclass countList(list): def __init__(self,*args): super(countList,self).__init__(*args) self.count=0 def __getitem__(self,index): self.count+=1 return super(countList,self).__getitem__(index)运算结果:================= RESTART: C:\Users\Mr_Deng\Desktop\test.py =================>>> l1=countList(range(10))>>> l1[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> del l1[0:3]>>> l1[3, 4, 5, 6, 7, 8, 9]>>> l1[2]+l1[2]+l1[3]16>>> l1.count3>>>
0 0
- Python——基本的序列和映射规则
- 基本序列和映射规则
- Python 基本规则和特殊字符
- Python基本的数据结构-序列
- servelt和filter的映射规则
- python序列映射操作
- Python成长之路(一)——准备、基本数据类型、序列、运算、缩进和选择
- 零基础学python-3.1 python基本规则和语句
- Python基本规则详解
- Hibernate映射解析—— 基本映射
- hibernate 映射关系—基本映射
- 初学Makefile——基本规则和习惯
- Hibernate的基本标签和映射
- Google Gson:POJO 和 JSON 的字段映射规则
- JAVA规则—基本篇
- JAVA规则—基本篇
- python基本语法:序列
- 【Hibernate】——基本映射
- Python学习笔记(2)
- ActiveMQ SSL应用之一 整体介绍
- 超级账本PBFT(拜占庭容错)算法详解
- leetCode练习(79)
- Selenium+Python浏览器调用:Firefox
- Python——基本的序列和映射规则
- 组合查询
- java集合框架
- TCP&UDP协议
- JDBC编程——MySQL
- PHP面向对象_对象串行化serialize(),__sleep(),__wakeup()
- hdu 1002 A + B Problem II
- java常用类
- RecyclerView的基本用法