?? 博客主頁:??@披星戴月的賈維斯
?? 歡迎關(guān)注:??點(diǎn)贊??收藏??留言
??系列專欄:?? Python專欄
??請不要相信勝利就像山坡上的蒲公英一樣唾手可得,但是請相信,世界上總有一些美好值得我們?nèi)σ愿?,哪怕粉身碎骨??
??一起加油,去追尋、去成為更好的自己!
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
??1、列表
??1.1列表的定義
????列表是一種讓程序猿在代碼中批量表示/保存數(shù)據(jù)的方式。
編程中, 經(jīng)常需要使用變量, 來保存/表示數(shù)據(jù).
如果代碼中需要表示的數(shù)據(jù)個(gè)數(shù)比較少, 我們直接創(chuàng)建多個(gè)變量即可.
比如說:
a = 1
b = 2
c = 3
但是有的時(shí)候, 代碼中需要表示的數(shù)據(jù)特別多, 甚至也不知道要表示多少個(gè)數(shù)據(jù). 這個(gè)時(shí)候, 就需要用到列表.
比如說:
a = []; # []就代表是列表
注意:元組和列表的區(qū)別
元組和列表相比, 是非常相似的, 只是列表中放哪些元素可以修改調(diào)整, 元組中放的元素是創(chuàng)建元組的時(shí)候就設(shè)定好的, 不能修改調(diào)整.
??1.2列表的創(chuàng)建
- 創(chuàng)建列表主要有兩種方式. [ ] 表示一個(gè)空的列表.
lista = []
lista = list()
print(type(lista))
- 如果需要往里面設(shè)置初始值, 可以直接寫在 [ ] 當(dāng)中。這一點(diǎn)的和數(shù)組的使用很像。我們也可以直接打印列表中的值。
lista = [9, 8, 7, 6, 5, 4]
print(lista)
輸出:
[9, 8, 7, 6, 5, 4]
- 列表中存放的元素允許是不同的類型. (這一點(diǎn)和 C++ Java 差別較大).
lista = [9,'haha', 'hello', False]
print(lista)
輸出
[9, 'haha', 'hello', False]
??1.3列表通過下標(biāo)訪問
在列表中,我們可以通過列表的下標(biāo)去訪問對應(yīng)的元素,這一點(diǎn)和數(shù)組或者vector很像, 下標(biāo)也可以稱為索引,下標(biāo)從0開始。
代碼示例:
lista = [9,'haha', 'hello', False, 8, 7, 5, 4]
print(lista[2])
我們不僅能通過下標(biāo)去訪問列表對應(yīng)元素的位置,我們還可以修改對應(yīng)下標(biāo)的值。
代碼示例:
lista = [9,'haha', 'hello', False, 8, 7, 5, 4]
lista[2] = 'string'
print(lista)
輸出:
[9, 'haha', 'string', False, 8, 7, 5, 4]
注意:
- 我們對列表操作時(shí),不能越界,不然會(huì)報(bào)錯(cuò)。
- 因?yàn)橄聵?biāo)是從 0 開始的, 因此下標(biāo)的有效范圍是 [0, 列表長度 - 1]. 使用 len 函數(shù)可以獲取到列表的元素個(gè)數(shù).
-
下標(biāo)可以取負(fù)數(shù). 表示 “倒數(shù)第幾個(gè)元素”
代碼示例:
lista = [9,'haha', 'hello', False, 8, 7, 5, 4]
lista[2] = 'string'
print(lista[2])
print(lista[-6])
代碼輸出:
string
string
解釋:因?yàn)閟tring是第二個(gè)位置,也是倒數(shù)第六個(gè)位置。
??2、列表的切片操作
??2.1什么是切片操作
通過下標(biāo)操作是一次取出里面第一個(gè)元素.
通過切片, 則是一次取出一組連續(xù)的元素, 相當(dāng)于得到一個(gè)子列表。
- 使用 [ : ] 的方式進(jìn)行切片操作.
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9 ]
print(listb[2 : 5])
輸出:
[3, 4, 5]
解釋:因?yàn)槲覀儌鬟M(jìn)去的是一個(gè)左閉右開區(qū)間就是下標(biāo)從 [2 - 5)的區(qū)間內(nèi)的3個(gè)數(shù)。
- 切片操作還可以指定 “步長” , 也就是 “每訪問一個(gè)元素后, 下標(biāo)自增幾步”
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9 ]
print(listb[::1])
print(listb[::2])
print(listb[::3])
print(listb[::5])
輸出:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5, 7, 9]
[1, 4, 7]
[1, 6]
- 切片操作指定的步長還可以是負(fù)數(shù), 此時(shí)是從后往前進(jìn)行取元素. 表示 "每訪問一個(gè)元素之后, 下標(biāo)自減幾步。
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9 ]
print(listb[::1])
print(listb[::2])
print(listb[::3])
print(listb[::5])
輸出:
[9, 8, 7, 6, 5, 4, 3, 2, 1]
[9, 7, 5, 3, 1]
[9, 6, 3]
[9, 4]
- 如果切片中填寫的數(shù)字越界了, 不會(huì)有負(fù)面效果. 只會(huì)盡可能的把滿足條件的元素輸出。
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9 ]
print(listb[50:100])
輸出:[]
??3、列表元素的遍歷
??3.1什么是切片操作
????“遍歷” 指的是把元素一個(gè)一個(gè)的取出來, 再分別進(jìn)行處理.
- for循環(huán)遍歷列表元素
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao' ]
for elem in listb:
print(elem)
輸出:
1
2
3
4
5
6
7
8
9
haha
nihao
- 也可以使用 for 按照范圍生成下標(biāo), 按下標(biāo)訪問
代碼示例:
for i in range(0, len(listb)):
print(listb[i])
- 還可以使用 while 循環(huán). 手動(dòng)控制下標(biāo)的變化
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao' ]
i = 0
while i < len(listb):
print((listb[i]))
i+=1
??4、列表的增刪查連
??4.1新增元素
- 使用 append 方法, 向列表末尾插入一個(gè)元素(尾插).
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao' ]
listb.append('888@qq.com')
print(listb)
輸出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 'haha', 'nihao', '888@qq.com']
- 使用 insert 方法, 向任意位置插入一個(gè)元素
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao' ]
listb.insert(2, '666');
print(listb)
輸出:
[1, 2, '666', 3, 4, 5, 6, 7, 8, 9, 'haha', 'nihao']
拓展:什么是 “方法” (method)
方法其實(shí)就是函數(shù). 只不過函數(shù)是獨(dú)立存在的, 而方法往往要依附于某個(gè) “對象”.
像上述代碼 alist.append , append 就是依附于 listb, 相當(dāng)于是 “針對 listb 這個(gè)列表, 進(jìn)行尾插操作”.
??4.2查找元素
- 使用 in 操作符, 判定元素是否在列表中存在. 返回值是布爾類型
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao' ]
print(6 in listb)
print('haha' in listb)
print('lala' in listb)
輸出:
True
True
False
- 使用 index 方法, 查找元素在列表中的下標(biāo). 返回值是一個(gè)整數(shù). 如果元素不存在, 則會(huì)拋出異常.
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao' ]
print(listb.index(2))
print(listb.index('haha'))
#print(listb.index('lala'))
輸出:
1
9
但是如果查詢一個(gè)列表中不存在的值,就會(huì)拋異常。
??4.3刪除元素
- 使用 pop 方法刪除最末尾元素
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao']
listb.pop()
listb.pop()
print(listb)
輸出:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
- pop 也能按照下標(biāo)來刪除元素
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao']
listb.pop(2)
listb.pop(4)
print(listb)
輸出:
[1, 2, 4, 5, 7, 8, 9, 'haha', 'nihao']
- 使用 remove 方法, 按照值刪除元素.
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao']
listb.remove(2)
listb.remove(1)
print(listb)
輸出:
[3, 4, 5, 6, 7, 8, 9, 'haha', 'nihao']
??4.4連接列表
- 使用 + 能夠把兩個(gè)列表拼接在一起.
此處的 + 結(jié)果會(huì)生成一個(gè)新的列表. 而不會(huì)影響到舊列表的內(nèi)容.
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao']
lista = ['a', 'b','c','d', 'e']
print(lista + listb)
輸出:
['a', 'b', 'c', 'd', 'e', 1, 2, 3, 4, 5, 6, 7, 8, 9, 'haha', 'nihao']
- 使用 extend 方法, 相當(dāng)于把一個(gè)列表拼接到另一個(gè)列表的后面.
a.extend(b) , 是把 b 中的內(nèi)容拼接到 a 的末尾. 不會(huì)修改 b, 但是會(huì)修改 a.
代碼示例:
listb = [1, 2, 3, 4, 5, 6, 7, 8, 9,'haha', 'nihao']
lista = ['a', 'b','c','d', 'e']
lista.extend(listb)
print(lista)
print(listb)
輸出:
['a', 'b', 'c', 'd', 'e', 1, 2, 3, 4, 5, 6, 7, 8, 9, 'haha', 'nihao']
[1, 2, 3, 4, 5, 6, 7, 8, 9, 'haha', 'nihao']
??5、元組
元組的功能和列表相比, 基本是一致的.
元組使用 ( ) 來表示.
tuplea = ()
tuplea = tuple()
元組不能修改里面的元素, 列表則可以修改里面的元素
因此, 像讀操作,比如訪問下標(biāo), 切片, 遍歷, in, index, + 等, 元組也是一樣支持的.
但是, 像寫操作, 比如修改元素, 新增元素, 刪除元素, extend 等, 元組則不能支持.
另外, 元組在 Python 中很多時(shí)候是默認(rèn)的集合類型. 例如, 當(dāng)一個(gè)函數(shù)返回多個(gè)值的時(shí)候.
代碼示例:
def func():
return 1, 2
ans = func()
print(type(ans))
輸出:
<class 'tuple'>
既然已經(jīng)有了列表, 為啥還需要有元組?
元組相比于列表來說, 優(yōu)勢有兩方面:
你有一個(gè)列表, 現(xiàn)在需要調(diào)用一個(gè)函數(shù)進(jìn)行一些處理. 但是你有不是特別確認(rèn)這個(gè)函數(shù)是否會(huì)把你的列表數(shù)據(jù)弄亂. 那么這時(shí)候傳一個(gè)元組就安全很多.
字典是一個(gè)鍵值對結(jié)構(gòu). 要求字典的鍵必須是 “可hash對象” (字典本質(zhì)上也是一個(gè)hash表). 而一個(gè)可hash對象的前提就是不可變. 因此元組可以作為字典的鍵, 但是列表不行.文章來源:http://www.zghlxwxcb.cn/news/detail-418243.html
??總結(jié)
- 列表和元組都是日常開發(fā)最常用到的類型. 最核心的操作就是根據(jù) [ ] 來按下標(biāo)操作.
- 在需要表示一個(gè) “序列” 的場景下, 就可以考慮使用列表和元組.
- 如果元素不需要改變, 則優(yōu)先考慮元組.
- 如果元素需要改變, 則優(yōu)先考慮列表
本文總結(jié)了列表和元組的知識(shí),希望對大家能夠有所幫助,感謝支持!文章來源地址http://www.zghlxwxcb.cn/news/detail-418243.html
到了這里,關(guān)于【30天python從零到一】---第七天:列表和元組的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!