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

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