【Python基础入门系列】第07天:Python 数据结构--序列
python內(nèi)置序列類型最常見的是列表,元組和字符串。(序列是python中最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),而數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲,組織數(shù)據(jù)的方式。)
另外還提供了字典和集合的數(shù)據(jù)結(jié)構(gòu),但他們屬于無順序的數(shù)據(jù)集合體,不能像前者通過位置索引來訪問數(shù)據(jù)。python序列中的每個元素都有一個序號(元素的具體位置),這個序號叫索引,索引下標(biāo)從0開始,以此類推......?
本文著重介紹python的序列及其實(shí)際應(yīng)用,鞏固python語法基礎(chǔ)。
?
?
一、序列概念
?
數(shù)據(jù)結(jié)構(gòu):以某種方式組合起來的數(shù)據(jù)元素的集合。
序列:以編號方式組合起來的數(shù)據(jù)元素的集合。
?
二、序列特點(diǎn)以及通用操作
索引:通過[n]獲取第n號元素值。n>0索引方向從左向右(0開始),n<0索引方向從右向左(-1開始)。函數(shù)調(diào)用返回的是序列時,可以直接對其進(jìn)行索引。
切片:用[a:b:c]訪問 [a,b) 范圍內(nèi)的元素。a,b,c均可正可負(fù)可空。a:起始位,b:結(jié)束位,c:步長。?
相加:只可拼接同類型的序列。
相乘:重復(fù)序列x次。
檢查:使用in運(yùn)算符判斷序列中是否有某成員。返回布爾值(True|False)
通用內(nèi)置函數(shù):len返回序列內(nèi)元素的個數(shù),min和max分別返回序列內(nèi)元素的最大值和最小值
?
?
?
三、python內(nèi)置序列1——list
列表定義
形如:[a,b,c,d],數(shù)據(jù)元素可以是另一個序列,元素可修改。
?
列表構(gòu)建
list()可以將其它序列轉(zhuǎn)換為列表。
?
列表基本操作
修改元素:直接選中賦值?ls[1]='e'
刪除元素:del語句?del ls[1]
批量修改元素:使用切片賦值增刪改原有數(shù)據(jù)元素 ls[1:1]='ello'
?
列表常用方法
append:列表末尾添加一個對象(可以是一個列表)
clear:只清空,不刪除列表
copy:與ls1=ls2不同,ls2=ls1.copy()后修改ls2不影響ls1
count:計(jì)算元素出現(xiàn)次數(shù)
extend:列表末尾添加多個值
index:查找某元素在列表中出現(xiàn)第一次的索引值
insert:列表某個位置添加一個對象 ls.insert(2,'a')
pop:刪除一個元素并返回該元素,默認(rèn)為刪除末尾元素?
后進(jìn)先出:ls.append(ls.pop())
先進(jìn)先出:ls.append(ls.pop(0)) | ls.insert(0,ls.pop())
remove:刪除列表中第一次出現(xiàn)的指定元素
reverse:相反排序,反轉(zhuǎn)。
reversed(ls)函數(shù)返回一個迭代器,list(reversed(ls))可以轉(zhuǎn)換為列表
sort:排序sort(key,reverse) key:用于排序的函數(shù),reverse:True(降序) | False(升序)。sorted(ls,key,reverse),sorted返回列表
?
?
四、python內(nèi)置序列2——tuple
元組定義
形如:(a,b,c,d),元素不可修改。
元組構(gòu)建
單值:1, | (1)
多值:1,2,3 | (1,2,3)
tuple()將其它序列轉(zhuǎn)換為元組
元組作用
python很多內(nèi)置函數(shù)和方法返回元組,可作為映射中的鍵。
五、python內(nèi)置序列3——字符串
字符串定義
形如:‘a(chǎn)bcd’,元素不可修改。
字符串構(gòu)建
join()方法可以合并序列為字符串,sep.join(seq):seq各元素間由sep相接,合并為一個字符串
字符串常用方法
count:統(tǒng)計(jì)
find:查找某字符串是否存在,不存在返回-1
replace:參數(shù):(替換的字符,替換的內(nèi)容,替換的次數(shù))
strip:去除左右空格,lstrip/rstrip去左空格/去右空格
分割:split(字符,次數(shù))返回列表。partition(),只分割第一次出現(xiàn)的位置,分割內(nèi)容本身也在元組內(nèi)單獨(dú)為一個元素,返回元組
大小寫:capitalize()第一個字符大寫,title()字符串每個單詞首字母大寫,lower()/upper()全小寫/全大寫
判斷:startwith/endwith:判斷開頭結(jié)尾字符。isalpha/isalnum/isdigit/isspace:判斷字符串全為字母/字母+數(shù)字/全為數(shù)字/全為空
?
使用序列示例概覽:
#定義一個學(xué)生序列
>>> stuinfo=['liuwang','xuezhang','zuishuai',18,20]
列表相加:
#定義學(xué)生姓名和學(xué)生年齡,然后再定義一個屬于自己的數(shù)據(jù)庫將兩個列表加入
>>> stuname=['liuwang','xuezhang','zuishuai'] >>> stuage=[18,20,16] >>> database=[stuname,stuage] >>> database [['liuwang','xuezhang','zuishuai'], [18, 20, 16]]通用序列操作索引使用:
?
序列中所有元素都有編號,這些編號是從0開始,依次遞增,訪問這些元素通過下標(biāo)即可訪問,而這個編號就是索引,例如:
>>> database [['liuwang','xuezhang','zuishuai'], [18, 20, 16]]>>> database[0] ['liuwang', '學(xué)長', 'zuishuai'] >>> database[1] [18, 20, 16]
#字符串序列的索引
?
注意兩種索引方式:剛剛我們使用的是0開始的正向索引,
當(dāng)使用負(fù)數(shù)索引時,Python會從右邊到左進(jìn)行所有,-1是從序列的最后一個元素開始,如下:
?
? #從最后一個元素開始 >>> str[-1] 'o' #從倒數(shù)第二個元素開始 >>> str[-2] 'l'?
2.切片
?
同樣的和索引類似,切片是通過冒號操作來訪問一定范圍內(nèi)的元素,例如:
?
# 構(gòu)建一個序列tag,里面包含一個元素 >>> tag=['https://www.wakemeupnow.cn']# 拿到這個元素后通過分片取出一個范圍的值(示例域名是我的博客嘿嘿) >>> tag[0][8:] 'www.wakemeupnow.cn'由上所知,切片操作的的實(shí)現(xiàn)需要提供兩個索引作為邊界,是一個左閉右開的區(qū)間。
除了上述方案,也可以通過顯示方式進(jìn)行操作:
2.1 切片快捷操作
>>> num[0:3] # 取到前面3個數(shù)據(jù) [1, 2, 3]2.2 分片步長操作
?
分片操作可以給元素設(shè)置步長,在開始和結(jié)束的時候指定相應(yīng)步長獲取元素,例如:
?
# 按照步長為2返回第1個和第6個之間的元素 >>> num[0:6:2] [1, 3, 5]?
另外需要注意的是負(fù)數(shù)步長是從元素尾部到前遍歷整個序列,所以負(fù)數(shù)的分片開始索引一定要大于結(jié)束索引
>>> num[7:-1] [8, 9]當(dāng)開始索引和結(jié)束索引是負(fù)數(shù)時開始所以必須小于結(jié)束索引:
?
>>> num[-9:-1] [2, 3, 4, 5, 6, 7, 8, 9]對于一個正數(shù)步長,Python會從序列的頭部開始向右提取元素,直達(dá)最后一個元素,而對于負(fù)數(shù)步長,則是從序列的尾部開始向左提取元素,直達(dá)提取到第一個,例如:
# 提取前6個元素,步長為2 >>> num[:6:2] [1, 3, 5] # 提取從后往前的8個元素,步長為2 >>> num[:2:-2] [10, 8, 6, 4]3.序列相加
?
序列相加通過加號“+”進(jìn)行序列和序列之間的連接操作:
>>> 'hello'+' 學(xué)長!' 'hello 學(xué)長!'>>> [1,2,3]+['liuwang','學(xué)長'] [1, 2, 3, 'liuwang', '學(xué)長']?
注意:只有相同類型的序列才能進(jìn)行連接操作。
?
4.序列相乘
?
一個數(shù)字x乘以一個序列會產(chǎn)生一個新的序列,原來的序列會被重置成x次
>>> ['hello'+' world !']*3 ['hello world !', 'hello world !', 'hello world !']5.成員資格
?
檢查一個元素是否在一個序列中使用運(yùn)算符in進(jìn)行檢查, in運(yùn)算符返回檢查某個條件的布爾值,若為真返回true,否則返回false,例如:
>>> str='hello' >>> 'h' in str True>>> 'x' in str False6.序列長度、最大值和最小值
?
序列長度、最大值和最小值使用內(nèi)建函數(shù)len、max、min進(jìn)行檢測,len返回序列中所包含的元素?cái)?shù)量,max和min分別返回序列中最大值和最小值的元素
>>> len([11,34,23]) 3 >>> max(11,34,23) 34 >>> min(11,34,23) 11總結(jié)
本節(jié)給大家介紹了 Python ?數(shù)據(jù)結(jié)構(gòu)之序列的使用,對 Python 工程師使用提供了支撐,可以在項(xiàng)目中實(shí)際應(yīng)用中取出相應(yīng)元素,今天的知識別不是很難,但是需要牢牢地鞏固。
?
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的【Python基础入门系列】第07天:Python 数据结构--序列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10安装乌班图18双系统
- 下一篇: 【Python基础入门系列】第02天:P