一.项目背景
本篇主要想给大家介绍一下我们平常用的最多数据结构序列,主要从它的分类和如何自定义序列两方面给大家讲解,属于Python高阶内容知识点,希望大家能够学有所获。
二.序列分类
1.容器序列:list、tuple、deque
2.扁平序列:str、bytes、bytearray、array.array
3.可变序列:list, deque,bytearray、array
4.不可变序列:str、tuple、bytes
这里我们分享一下array.array基本使用。
from array import array
#创建array,类型为无符号整型
myarr = array("I")
#添加元素5
myarr.append(5)
#添加元素6
myarr.append(6)
#添加元素4
myarr.append(4)
#添加元素3
myarr.append(3)
#输出array
print(myarr)
#删除最后一个元素
myarr.pop()
#输出array
print(myarr)
三.自定义序列
1.分析abc继承关系
》》from collections import abc
》》分析Sequence相关抽象方法
》》__init__,__reversed__,__getitem__,__len__,__iter__,__contains_
importnumbers
class Stus:
#初始化操作
def __init__(self, school_name, study_name, students):
#初始化学校名称
self.school_name = school_name
#初始化学习小组名称
self.study_name = study_name
#初始化学生名单
self.students = students
#反转序列
def __reversed__(self):
self.students.reverse()
#获取元素
def __getitem__(self, item):
#获取类名称类型
cls = type(self)
#判断item是否为切片类型,主要目的是让序列支持切片操作
if isinstance(item, slice):
#初始化对象
return cls(school_name=self.school_name, study_name=self.study_name, students=self.students[item])
#判断item是否为整型类型,主要目的是让序列支持切片操作
elif isinstance(item, numbers.Integral):
#初始化对象
return cls(school_name=self.school_name, study_name=self.study_name, students=[self.students[item]])
#返回学生名单长度
def __len__(self):
return len(self.students)
#转换为可迭代对象
def __iter__(self):
return iter(self.students)
#判断是否含有该对象
def __contains__(self, item):
#判断是否存在
if item in self.students:
#存在返回True
return True
else:
#不存在返回False
return False
#初始化学生名单
students = ["zhangsan", "lisi", "wangwu", "zhaoliu"]
#初始化对象
stus = Stus(school_name="第一中学", study_name="Physics", students=students)
#反转对象
reversed(stus)
#输出提示信息
print('*'*30)
#输出对象长度
print(len(stus))
#输出提示信息
print('*'*30)
#使用切片获取对象,遍历每个对象
for stu in stus[:2]:
#输出对象
print(stu)
#输出提示信息
print('*'*30)
#判断对象是否存在
if "zhangsan" in stus:
print(1)
else:
print(0)
#输出提示信息
print('*'*30)
#遍历每个对象
for stu in stus:
#输出对象
print(stu)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
数据结构
+关注
关注
3文章
573浏览量
40121 -
序列
+关注
关注
0文章
70浏览量
19555 -
python
+关注
关注
56文章
4792浏览量
84624
发布评论请先 登录
相关推荐
E5022A/B和E5023A用户自定义序列编程手册
This manual provides the information for programmers to create his or her own programs. This manual includes sample programs in Visual Basic and function references.
发表于 08-19 14:18
Python学习要点:自定义序列实现切片功能
基于原生的序列类型(如字符串、列表、元组),那么,我们是否可以定义自己的序列类型并让它支持切片语法呢?更进一步,我们是否可以自定义其它对象(如字典)并让它支持切片呢? 1、魔术方法:_
发表于 11-24 11:51
•689次阅读
目前S型数字源表上位机软件实现的功能有哪些
目前S型数字源表上位机软件已实现了哪些功能? ①、I-t、V-t、R-t测试; ②、序列扫描; ③、自定义序列扫描; ④、BJT扫描; ⑤、MOS扫描; ⑥、LIV测试; 相关功能均具有绘图及数据
发表于 10-23 13:31
•575次阅读
自定义视图组件教程案例
自定义组件 1.自定义组件-particles(粒子效果) 2.自定义组件- pulse(脉冲button效果) 3.自定义组件-progress(progress效果) 4.
发表于 04-08 10:48
•14次下载
如何使用周期性空间频率表面来建模旋转对称曲面的不规则度?
具体方法为使用专用的自定义序列模式表面DLL(常规偶次非球面结合Zernike项与矢高周期变化得到)建模该中空间频率表面。
自定义算子开发
一个完整的自定义算子应用过程包括注册算子、算子实现、含自定义算子模型转换和运行含自定义op模型四个阶段。在大多数情况下,您的模型应该可以通过使用hb_mapper工具完成转换并顺利部署到地平线芯片上……
评论