
一.項(xiàng)目背景
本篇主要想給大家介紹一下我們平常用的最多數(shù)據(jù)結(jié)構(gòu)序列,主要從它的分類和如何自定義序列兩方面給大家講解,屬于Python高階內(nèi)容知識(shí)點(diǎn),希望大家能夠?qū)W有所獲。
二.序列分類
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
#創(chuàng)建array,類型為無(wú)符號(hào)整型
myarr = array("I")
#添加元素5
myarr.append(5)
#添加元素6
myarr.append(6)
#添加元素4
myarr.append(4)
#添加元素3
myarr.append(3)
#輸出array
print(myarr)
#刪除最后一個(gè)元素
myarr.pop()
#輸出array
print(myarr)

三.自定義序列
1.分析abc繼承關(guān)系
》》from collections import abc
》》分析Sequence相關(guān)抽象方法
》》__init__,__reversed__,__getitem__,__len__,__iter__,__contains_

importnumbers
class Stus:
#初始化操作
def __init__(self, school_name, study_name, students):
#初始化學(xué)校名稱
self.school_name = school_name
#初始化學(xué)習(xí)小組名稱
self.study_name = study_name
#初始化學(xué)生名單
self.students = students
#反轉(zhuǎn)序列
def __reversed__(self):
self.students.reverse()
#獲取元素
def __getitem__(self, item):
#獲取類名稱類型
cls = type(self)
#判斷item是否為切片類型,主要目的是讓序列支持切片操作
if isinstance(item, slice):
#初始化對(duì)象
return cls(school_name=self.school_name, study_name=self.study_name, students=self.students[item])
#判斷item是否為整型類型,主要目的是讓序列支持切片操作
elif isinstance(item, numbers.Integral):
#初始化對(duì)象
return cls(school_name=self.school_name, study_name=self.study_name, students=[self.students[item]])
#返回學(xué)生名單長(zhǎng)度
def __len__(self):
return len(self.students)
#轉(zhuǎn)換為可迭代對(duì)象
def __iter__(self):
return iter(self.students)
#判斷是否含有該對(duì)象
def __contains__(self, item):
#判斷是否存在
if item in self.students:
#存在返回True
return True
else:
#不存在返回False
return False
#初始化學(xué)生名單
students = ["zhangsan", "lisi", "wangwu", "zhaoliu"]
#初始化對(duì)象
stus = Stus(school_name="第一中學(xué)", study_name="Physics", students=students)
#反轉(zhuǎn)對(duì)象
reversed(stus)
#輸出提示信息
print('*'*30)
#輸出對(duì)象長(zhǎng)度
print(len(stus))
#輸出提示信息
print('*'*30)
#使用切片獲取對(duì)象,遍歷每個(gè)對(duì)象
for stu in stus[:2]:
#輸出對(duì)象
print(stu)
#輸出提示信息
print('*'*30)
#判斷對(duì)象是否存在
if "zhangsan" in stus:
print(1)
else:
print(0)
#輸出提示信息
print('*'*30)
#遍歷每個(gè)對(duì)象
for stu in stus:
#輸出對(duì)象
print(stu)

-
數(shù)據(jù)結(jié)構(gòu)
+關(guān)注
關(guān)注
3文章
573瀏覽量
40664 -
序列
+關(guān)注
關(guān)注
0文章
70瀏覽量
19825 -
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86444
發(fā)布評(píng)論請(qǐng)先 登錄
HarmonyOS應(yīng)用自定義鍵盤解決方案

【Python編程思想】B站最全的Python視頻課程,趕快來(lái)體驗(yàn)-方法、屬性和迭代器-04-自定義序列-1

【Python編程思想】B站最全的Python視頻課程,趕快來(lái)體驗(yàn)-方法、屬性和迭代器-04-自定義序列-2
E5022A/B和E5023A用戶自定義序列編程手冊(cè)
Python學(xué)習(xí)要點(diǎn):自定義序列實(shí)現(xiàn)切片功能
目前S型數(shù)字源表上位機(jī)軟件實(shí)現(xiàn)的功能有哪些
自定義視圖組件教程案例
ArkUI如何自定義彈窗(eTS)
如何使用周期性空間頻率表面來(lái)建模旋轉(zhuǎn)對(duì)稱曲面的不規(guī)則度?
自定義算子開發(fā)

評(píng)論