<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前言:
前面我們提到了Python
資料型別中的內建數值型別與字串型別。今天學習一下Python的序列資料型別,要知道的是在Python中沒有陣列這一資料結構,也沒有提供直接建立陣列的功能,但是可以使用內建的序列資料型別實現陣列的某些功能。
序列資料型別是Python
中的一種基礎的資料結構,是一組有順序的元素的集合。
這個集合內可以有多個元素也可以不包含元素。
總的來說包含元組(tuple
)、列表(list
)、字串(str
)、位元組資料(bytes
與bytearray
)
如果根據物件可變不可變進行劃分的話
可變序列為:列表、位元組陣列
不可變序列為:字串、元組、位元組序列
支援序列型別的內建函數:len()
、max()
、min()
、sum()
。其中使用sum()函數的時候
必須是數值型序列,如果有非數值型的序列則將丟擲TypeError,對於字串、位元組數
據也會導致該結果。其餘函數在使用的時候對字元按照字典序進行挑選。
序列中的各個型別均是可以迭代的物件,可以直接使用for 迴圈進行迭代獲取每一個資料。也可以通過下標索引進行指定位置上的資料獲取。序列的第一個元素是X[0],序列的最後一個元素是X[len(X)-1]
。序列的下標越界或者不是整數均會導致異常。
序列還支援切片操作,如下:
st="asfdcac" #列印所有的資料 print(st[::]) #逆序列印字串 print(st[-1::-1])
序列可以使用操作符+連線兩個序列,形成一個新的序列物件。也可以通過*進行序列的重複。
在本文中前面提到了可以使用迴圈對序列進行迭代,找出每一個元素除了這一功能,Python中還有直接判斷序列中是否包含某成員
語法規則如下:
通過內建函數sorted()
可以對序列進行排序,並將排序後的結果進行返回。
def sorted(*args, **kwargs):
這裡可以傳參一個可迭代的序列,reverse
可以指定升序還是降序當reverse
為True時排序結果為降序。key引數是用於計算比較鍵值的函數
①有限個數變數進行序列的拆分
在本方法下要確定序列的成員個數與接受變數個數保持一致。
變數1,變數2,變數3=序列
②不確定個數成員變數進行拆分
本方法使用與接受序列中特定位置的成員,使用*進行不確定個數成員變數的接受。
每次拆分*控制的變數只允許出現一次。
例如:
mystr="nfklsdnfj0sd.....asdfl" s1,*args,s2=mystr
此時s1,s2會分別接收n與l其餘的將會讓args進行接受。
列表的介紹:
前面提到了列表是一個可變的序列,意思就是可以直接對列表物件本身進行修改刪除等操作
列表還是Python中一組有序的資料結構,在Python中沒有陣列,可以使用列表起陣列的作用(✪ω✪)
有三種方法:
程式碼如下:
# 直接宣告 lis0=list(i for i in range(0,101,10)) print(lis0) lis1=[1,2,3,4] # 迭代器進行宣告 lis2=[ i for i in range(0,101,10)] print(lis1,lis2) #字面量 lis3=['Hello',123,'print',bool] print(lis3) '''
程式碼如下:
# 直接在列表末尾新增 lis1.append(2) print(lis1) # 切片法新增元素(直接追加另外一個列表的一部分元素)記憶體地址不變 print(id(lis1)) lis1.extend(lis2) lis1.extend(lis2[1:5]) print(lis1,id(lis1)) # 在指定的位置插入指定的元素999 lis1.insert(1,999) print('11111111111',lis1)
程式碼如下:
# 什麼也不填,預設刪除的是列表的最後一個元素 lis1.pop() print(lis1) # 將列表內的指定下標元素進行刪除 lis1.pop(1) print(lis1) # 刪除指定的元素 lis1.remove(80) print(lis1) # 切片法刪除元素 # 切片法刪除元素後,列表的地址會發生改變***** print(id(lis1),id(lis1[1:4]),lis1[1:4]) lis1[1:4] # 清空列表 lis1.clear() print(lis1) # 刪除列表(再使用該列表的時候會報錯) del lis1 # print(lis1) '''列表內元素的修改''' print(lis2) # 對指定索引的元素進行修改 lis2[0]=100 print(lis2) # 切片法修改一段列表 # 會將新指定的列表,替換掉指定索引區間的元素,區間超出的話,會直接在末尾新增 # 切片內的元素個數,與所要改成的切片元素個數,不一致沒關係直接進行替換 lis2[10:]=[1,2,3] print(lis2) # del也可以對指定位置元素進行刪除 del lis[1] del lis[2:4] # 也可以直接對列表的某段進行賦空[]達到刪除的效果 lis2[2:4]=[]
元組是不可變序列,所以不支援增刪,這裡僅僅對他的特性以及注意點進行介紹。
元組也是一組有序序列,包含零個或多個物件的參照,與列表十分相似但又有許多不同.
具體來說有以下特點:
元組是不可變序列僅支援讀取
如果元組中只有一個資料,那麼資料後的逗號不可省略元組的括號可以省略。
元祖的宣告與遍歷如下:
# 元組的宣告一 s=('Tom',666,'嗨') print(s,type(s)) # 元組的宣告二 p=tuple(('Tom',666,'嗨')) print(p) # 空元組 ss=() print(ss,type(ss)) # 單元素元組--要加,否則會會直接轉換成字串型別 sss=('fuck') print(sss,type(sss)) # 元組的括號可以省略 sss='fuck', print(sss,type(sss)) tp=('nabd',['123',123],'李四') print(tp) # 元組對應位置的元素不會變,但元組對應位置元素裡面的內容可以改變 tp[1].insert(1,666) print(tp) # 元組的遍歷 for temp in s: print(temp)
在前面一篇部落格已經提到過字串了,這裡就不再囉嗦一遍了。
位元組序列可以分為可變位元組序列(bytearray)與不可變位元組序列(bytes)。
使用字面量生成位元組數列只需要在字串前加上b即可。
eg:str1=b"Hello world"
也可以使用bytes()
或者bytearray()
進行位元組序列的宣告
其中引數可以傳遞可迭代物件,只不過可迭代物件的成員要是在0-255的整數。bytes
或者bytearray
的方法不接受字串引數,只接受對應型別的引數。否則報錯
位元組序列支援序列的基本操作。
可以通過字串編碼得到位元組序列,也可以通過解碼字元序列得到字串
使用的函數是decode()
與encode()
。使用過程要注意編碼、解碼規則。
總結:
本篇部落格針對Python序列進行了講解。序列在學習使用Python中還是經常使用的,希望大家好好掌握,
到此這篇關於Python語言中的資料型別-序列的文章就介紹到這了,更多相關Python語言中的序列內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45