0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是自定义序列

汽车电子技术 来源:Python数据分析之旅 作者:cauwfq 2023-02-24 14:48 次阅读

pYYBAGP4XKOASk46AADbBInwAKM340.png

一.项目背景

本篇主要想给大家介绍一下我们平常用的最多数据结构序列,主要从它的分类和如何自定义序列两方面给大家讲解,属于Python高阶内容知识点,希望大家能够学有所获。

二.序列分类

1.容器序列:list、tuple、deque
2.扁平序列:str、bytes、bytearray、array.array
3.可变序列:list, deque,bytearray、array
4.不可变序列:str、tuple、bytes
这里我们分享一下array.array基本使用。

pYYBAGP4XNmAInI_AAEU5X5EvrQ609.png
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)

pYYBAGP4XTGANk44AABFWY6N0CU217.png

三.自定义序列

1.分析abc继承关系
》》from collections import abc
》》分析Sequence相关抽象方法
》》__init__,__reversed__,__getitem__,__len__,__iter__,__contains_

poYBAGP4XUmAfUS0AAEQf7vKksk409.png
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)

pYYBAGP4XWmAP55dAABbd-9V_TE204.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据结构
    +关注

    关注

    3

    文章

    573

    浏览量

    40121
  • 序列
    +关注

    关注

    0

    文章

    70

    浏览量

    19555
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84624
收藏 人收藏

    评论

    相关推荐

    【Python编程思想】B站最全的Python视频课程,赶快来体验-方法、属性和迭代器-04-自定义序列-1

    编程语言行业芯事经验分享
    蒙娜丽宁
    发布于 :2022年02月28日 13:47:15

    【Python编程思想】B站最全的Python视频课程,赶快来体验-方法、属性和迭代器-04-自定义序列-2

    编程语言行业芯事经验分享
    蒙娜丽宁
    发布于 :2022年02月28日 13:47:51

    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

    自定义函数测试学习工程

    自定义函数测试学习工程
    发表于 07-01 16:37 5次下载

    1602自定义字符

    1602液晶能够显示自定义字符,能够根据读者的具体情况显示自定义字符。
    发表于 01-20 15:43 1次下载

    JAVA教程之自定义光标

    JAVA教程之自定义光标,很好的学习资料。
    发表于 03-31 11:13 7次下载

    PDH网管盘 自定义字节

    PDH网管盘 自定义字节
    发表于 12-26 22:13 0次下载

    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次下载

    ArkUI如何自定义弹窗(eTS)

    自定义弹窗其实也是比较简单的,通过CustomDialogController类就可以显示自定义弹窗。
    的头像 发表于 08-31 08:24 2186次阅读

    如何使用周期性空间频率表面来建模旋转对称曲面的不规则度?

    具体方法为使用专用的自定义序列模式表面DLL(常规偶次非球面结合Zernike项与矢高周期变化得到)建模该中空间频率表面。
    的头像 发表于 01-17 11:42 1237次阅读

    labview自定义控件

    labview自定义精美控件
    发表于 05-15 16:46 17次下载

    自定义算子开发

    一个完整的自定义算子应用过程包括注册算子、算子实现、含自定义算子模型转换和运行含自定义op模型四个阶段。在大多数情况下,您的模型应该可以通过使用hb_mapper工具完成转换并顺利部署到地平线芯片上……
    的头像 发表于 04-07 16:11 2793次阅读
    <b class='flag-5'>自定义</b>算子开发

    labview超快自定义控件制作和普通自定义控件制作

    labview超快自定义控件制作和普通自定义控件制作
    发表于 08-21 10:32 13次下载