1.序列
在Python中最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)是序列,數(shù)據(jù)結(jié)構(gòu)可以理解為具有某種功能的特殊數(shù)據(jù)類型,序列中每個(gè)元素都有編號(hào),表示其位置或者索引,其中第一個(gè)元素的索引值為0,其意義是指出某個(gè)元素相對(duì)于序列開(kāi)題的偏移量。
1.1 序列
序列是python中的一種數(shù)據(jù)結(jié)構(gòu),和C語(yǔ)言中的數(shù)組比較類似,只是在Python中序列存儲(chǔ)的數(shù)據(jù)不限類別,也不需要所有的序列元素都是同一種類別。最常用的序列是:列表和元組。
列表和元組的主要區(qū)別在于列表可以修改而元組不可修改。當(dāng)需要一系列的值時(shí)就可以考慮使用序列,當(dāng)然序列中也可以存儲(chǔ)序列。
序列的使用距舉例:
>>
>
a
=
[
'I'
,
'love'
]
>>
>
b
=
[
'you'
,
2
]
>>
>
c
=
(
a
,
b
)
>>
>
c
(
[
'I'
,
'love'
]
,
[
'you'
,
2
]
)
1.2 通用序列操作
通用的序列操作包括 索引 、 切片 、 相加 、 相乘 和 成員資格檢查 。
索引
序列中所有的元素都有編號(hào)——從0開(kāi)始遞增,索引使用舉例:
>>
>
g
=
'Hello'
>>
>
g
[
0
]
'H'
當(dāng)使用的索引值為負(fù)數(shù)時(shí),Python會(huì)從后往前數(shù),索引值為正數(shù)時(shí)從前往后數(shù)比如:
>>
>
g
[
-
1
]
'o'
>>
>
g
[
1
]
'e'
切片
切片用來(lái)訪問(wèn)特定范圍內(nèi)的元素,可以使用兩個(gè)索引,用冒號(hào)分開(kāi),從第一個(gè)索引值開(kāi)始取,一直到第二個(gè)索引值,但不包括第二個(gè)索引的元素,索引為負(fù)時(shí)也是一樣,只是方向上是反的比如
>>
>
tag
=
'0123456789'
>>
>
tag
[
1
:
6
]
'12345'
>>
>
tag
[
-
5
:
-
1
]
'5678'
切片也可以簡(jiǎn)寫(xiě),操作如下:
>>
>
tag
=
'0123456789'
>>
>
tag
[
1
:
]
# 省略后面的數(shù)字默認(rèn)到序列的最后
'123456789'
>>
>
tag
[
:
1
]
# 省略第一個(gè)數(shù)字默認(rèn)從序列頭開(kāi)始
'0'
同時(shí)切片也可以指定步長(zhǎng),步長(zhǎng)大小一般是切片的第三個(gè)參數(shù),步長(zhǎng)標(biāo)記了切片取到的元素之間的間隔距離,比如:
>>
>
tag
=
'0123456789'
>>
>
>>
>
tag
[
1
:
9
:
1
]
# 步長(zhǎng)為1,取的元素之間沒(méi)有跳躍性
'12345678'
>>
>
tag
[
1
:
9
:
2
]
# 步長(zhǎng)為2,每取完一個(gè)元素會(huì)跳過(guò)一個(gè)元素,相當(dāng)于一步多夸了一個(gè)單位
'1357'
>>
>
tag
[
1
:
9
:
3
]
# 步長(zhǎng)為3,一下子跨越了三個(gè)元素
'147'
序列相加
序列之間跨越通過(guò)相加來(lái)合并,但是兩個(gè)不同類型的序列不能相加,舉例:
>>
>
list1
=
[
1
,
2
,
3
]
>>
>
list1
+
[
4
,
5
,
6
]
[
1
,
2
,
3
,
4
,
5
,
6
]
>>
>
list1
+
'abc'
Traceback
(
most recent call last
)
:
File
"
"
,
line
1
,
in
<
module
>
TypeError
:
can only concatenate
list
(
not
"str"
)
to
list
序列乘法
序列可以通過(guò)乘以一個(gè)數(shù)字n來(lái)重復(fù)n次,舉例:
>>
>
a
=
[
1
,
2
,
3
]
>>
>
a
*
2
[
1
,
2
,
3
,
1
,
2
,
3
]
成員資格
可以通過(guò)in來(lái)判斷一個(gè)元素是否在一個(gè)序列中,返回布爾型的數(shù)據(jù),具體的實(shí)現(xiàn)會(huì)在迭代器中詳解,舉例:
>>
>
a
=
[
1
,
2
,
3
]
>>
>
2
in
a
True
>>
>
4
in
a
False
2.列表
列表是一種序列,非常類似于C語(yǔ)言中的數(shù)組,但使用起來(lái)會(huì)簡(jiǎn)單很多,列表的定義可以通過(guò)以下兩種方式進(jìn)行:
>>
>
list1
=
[
1
,
2
,
3
]
# 直接通過(guò)[]定義列表
>>
>
list1
[
1
,
2
,
3
]
>>
>
list2
=
list
(
'123'
)
# 通過(guò)list方法定義列表
>>
>
list2
[
'1'
,
'2'
,
'3'
]
2.1列表基本操作:
2.1.1 列表修改
直接使用列表的索引值對(duì)指定地方的元素進(jìn)行修改,舉例:
>>
>
list1
=
[
1
,
1
,
1
]
>>
>
list1
[
1
]
=
2
>>
>
list1
[
1
,
2
,
1
]
注意 :不能給不存在的元素賦值。
2.1.2 刪除元素
使用del語(yǔ)句可以刪除列表的元素,舉例:
>>
>
list1
=
[
1
,
2
,
3
]
>>
>
del
list1
[
2
]
>>
>
list1
[
1
,
2
]
2.1.3 給切片賦值
切片的功能強(qiáng)大,可以給索引范圍內(nèi)的元素賦值,多于部分會(huì)自動(dòng)刪除,舉例:
>>
>
name
=
list
(
'lalalalalala'
)
>>
>
name
[
'l'
,
'a'
,
'l'
,
'a'
,
'l'
,
'a'
,
'l'
,
'a'
,
'l'
,
'a'
,
'l'
,
'a'
]
>>
>
name
[
2
:
]
=
list
(
'ar'
)
>>
>
name
[
'l'
,
'a'
,
'a'
,
'r'
]
2.2 列表方法
方法是與對(duì)象相關(guān)的一些函數(shù),可以增加序列使用的靈活性。
2.2.1 增加元素的方法append
append方法用于向列表尾端加一個(gè)對(duì)象,舉例:
>>
>
list1
=
[
1
,
2
,
3
]
>>
>
list1
.
append
(
4
)
>>
>
list1
[
1
,
2
,
3
,
4
]
2.2.2 清空列表的方法clear
clear用于將列表清空,舉例;
>>
>
list1
=
[
1
,
2
,
3
]
>>
>
list1
.
clear
(
)
>>
>
list1
[
]
2.2.3 復(fù)制列表的方法copy
常規(guī)復(fù)制只是將另一個(gè)名稱關(guān)聯(lián)到列表,沒(méi)有生成新的列表,舉例:
>>
>
a
=
[
1
,
2
]
>>
>
b
=
a
# 常規(guī)復(fù)制,沒(méi)有生成新的列表,b與a的地址一樣,所以改變a同時(shí)也會(huì)改變b
>>
>
b
[
1
,
2
]
>>
>
id
(
a
)
1921407627400
>>
>
id
(
b
)
1921407627400
>>
>
b
=
a
.
copy
(
)
# 使用copy復(fù)制,生成了新的列表
>>
>
b
[
1
,
2
]
>>
>
id
(
b
)
1921407642376
2.2.4 統(tǒng)計(jì)方法count
方法count統(tǒng)計(jì)指定的元素在列表中出現(xiàn)的次數(shù),舉例:
>>
>
a
=
[
1
,
2
,
2
,
3
,
3
,
3
,
4
,
4
,
4
,
4
]
>>
>
a
.
count
(
3
)
3
2.2.5 附加方法extend
extend方法可以將多個(gè)值加到目標(biāo)列表的尾端,一般指定參數(shù)也是一種序列,舉例:
>>
>
a
=
[
1
,
2
,
3
]
>>
>
b
=
[
4
,
5
,
6
]
>>
>
a
.
extend
(
b
)
>>
>
a
[
1
,
2
,
3
,
4
,
5
,
6
]
注意 :與序列的相加不同的是,序列相加后生成了一個(gè)新的序列,而extend方法是在原序列的基礎(chǔ)上加上了一段,沒(méi)有生成新的序列。
2.2.6 索引查找方法index
index方法在列表中查找第一個(gè)出現(xiàn)的目標(biāo)元素的索引,舉例:
>>
>
lst
=
[
'a'
,
'b'
,
'c'
,
'c'
]
>>
>
lst
.
index
(
'c'
)
2
2.2.7 元素插入方法insert
方法insert用于將一個(gè)對(duì)象插入列表中,舉例:
>>
>
a
=
[
1
,
2
,
3
]
>>
>
a
.
insert
(
1
,
4
)
# 在索引為1的位置插入4這個(gè)元素
>>
>
a
[
1
,
4
,
2
,
3
]
2.2.8 刪除并返回刪除元素的方法pop
方法pop從列表中刪除一個(gè)元素,并將刪除的值返回,當(dāng)pop方法傳入索引值時(shí)刪除對(duì)應(yīng)索引值的元素,否則刪除最后一個(gè)元素,舉例:
>>
>
a
=
[
1
,
2
,
3
,
4
]
>>
>
a
.
pop
(
)
4
>>
>
a
.
pop
(
0
)
1
>>
>
a
[
2
,
3
]
2.2.9 按元素值刪除元素的方法remove
方法remove用于刪除第一個(gè)為指定值的元素,舉例:
>>
>
a
=
[
'to'
,
'as'
,
'the'
,
'qaq'
,
'to'
,
'as'
]
>>
>
a
.
remove
(
'as'
)
>>
>
a
[
'to'
,
'the'
,
'qaq'
,
'to'
,
'as'
]
2.2.10 翻轉(zhuǎn)列表的方法reverse
reverse將列表按相反的順序排列,舉例;
>>
>
a
=
[
1
,
2
,
3
]
>>
>
a
.
reverse
(
)
>>
>
a
[
3
,
2
,
1
]
2.2.11 排序方法sort
sort方法若不帶參數(shù)則將列表就地排序,帶特殊參數(shù)可以按照特殊需求排序,舉例;
>>
>
a
=
[
1
,
2
,
3
,
5
,
6
,
7
,
8
,
4
,
9
]
>>
>
a
.
sort
(
)
# 默認(rèn)排序,按從小到大排列
>>
>
a
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
]
>>
>
a
=
[
'asdd'
,
'asdhjfuekqj'
,
'a'
,
'sdf'
,
'dhjucne'
]
>>
>
a
.
sort
(
key
=
len
)
# 按字符串長(zhǎng)度排序
>>
>
a
[
'a'
,
'sdf'
,
'asdd'
,
'dhjucne'
,
'asdhjfuekqj'
]
>>
>
a
=
[
1
,
5
,
3
,
2
,
6
,
4
,
7
,
8
,
9
]
>>
>
a
.
sort
(
reverse
=
True
)
# 按從大到小排列
>>
>
a
[
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
1
]
3 元組
元組是一種不能更改的序列,性質(zhì)與列表類似,采用()包裹,舉例:
>>
>
1
,
2
,
3
# 直接用逗號(hào)隔開(kāi)的數(shù)字可以構(gòu)成一個(gè)元組
(
1
,
2
,
3
)
>>
>
(
)
#空括號(hào)也能構(gòu)成元組
(
)
>>
>
42
,
(
42
,
)
可以通過(guò)tuple方法將一個(gè)序列變成元組,舉例:
>>
>
tuple
(
[
1
,
2
,
3
]
)
(
1
,
2
,
3
)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
