Python11 列表與字典

2021-10-21 04:15:16 字數 4672 閱讀 8129

乙個列表需要用中括號[ ]把裡面的各種資料框起來,裡面的每乙個資料叫作「元素」。每個元素之間都要用英文逗號隔開。

列表很包容,各種型別的資料(整數/浮點數/字串)無所不能包。

list1 = ['小明',18,1.70]

print(list1)

#測試#['小明', 18, 1.7]

偏移量:列表中的各個元素,好比教室裡的某排學生那樣,是有序地排列的,也就是說,每個元素都有自己的位置編號(即偏移量)

1.偏移量是從0開始的,而非我們習慣的從1開始;2.列表名後加帶偏移量的中括號,就能取到相應位置的元素。

students = ['小明','小紅','小剛']

print(students[0])

#測試#小明

切片:冒號左右兩邊的數字指的是列表中元素的偏移量

用冒號來擷取列表元素的操作叫作切片,顧名思義,就是將列表的某個片段拿出來處理。這種切片的方式可以讓我們從列表中取出多個元素

左右空,取到頭;左要取,右不取

偏移量取到的是列表中的元素,而切片則是擷取了列表的某部分,所以還是列表

list2 = [5,6,7,8,9]

print(list2[:])

print(list2[2:])

print(list2[:2])

print(list2[1:3])

print(list2[2:4])

#[5, 6, 7, 8, 9]

#[7, 8, 9]

#[5, 6]

#[6, 7]

#[7, 8]

增加語句

students = ['小明','小紅','小剛']

print(students)

#test

#['小明', '小紅', '小剛', '小美']

刪除語句del語句

語法是:del 列表名[元素的索引]

del語句非常方便,既能刪除乙個元素,也能一次刪除多個元素(原理和切片類似,左取右不取)

students = ['小明','小紅','小剛','小美']

del students[1]

print(students)

#test

#['小明', '小剛', '小美']

students = ['小明','小紅','小剛','小美']

del students[1:3]

print(students)

#test

#['小明', '小美']

students = ['小明','小紅','小剛','小美']

del students[:]

print(students)

#test

#

眾所周知,乙個老師的日常就是出卷、改卷。這次期中考呢,小明、小紅、小剛分別考了95、90和90分。

假如我們還用列表來裝資料的話,我們需要新建立乙個列表來專門放分數,而且要保證和姓名的順序是一致的,很麻煩。

所以類似這種名字和數值(如分數、身高、體重等)兩種資料存在一一對應的情況,用第二種資料型別——「字典」(dictionary)來儲存會更方便。

字典和列表有3個地方是一樣的:1.有名稱;2.要用=賦值;3.用逗號作為元素間的分隔符

而不一樣的有兩處:1.列表外層用的是中括號[ ],字典的外層是大括號

2.列表中的元素是自成一體的,而字典的元素是由乙個個鍵值對構成的,用英文冒號連線。如'小明':95,其中我們把'小明'叫鍵(key),95叫值(value)。

這樣唯一的鍵和對應的值形成的組合,我們就叫做【鍵值對】,上述字典就有3個【鍵值對】:'小明':95、'小紅':90、'小剛':90

如果不想口算,我們可以用len()函式來得出乙個列表或者字典的長度(元素個數),括號裡放列表或字典名稱。

這裡需要強調的是,字典中的鍵具備唯一性,而值可重複。也就是說字典裡不能同時包含兩個'小明'的鍵,但卻可以有兩個同為90的值。

students = ['小明','小紅','小剛']

scores =

print(len(students))

print(len(scores))

#test

#3#3

字典的索引,和列表通過偏移量來索引不同,字典靠的是鍵

和列表相似的是要用[ ],不過因為字典沒有偏移量,所以在中括號中應該寫鍵的名稱,即字典名[字典的鍵]

scores = 

print(scores['小明'])

#test

#95

刪除字典裡鍵值對的**是del語句del 字典名[鍵],而新增鍵值對要用到賦值語句字典名[鍵] = 值

album = 

del album['周杰倫']

print(album)

album['周杰倫'] = '十一月的蕭邦'

print(album)

print(album['周杰倫'])

#test##

#十一月的蕭邦

列表和字典同作為python裡能儲存多條資料的資料型別,有許多共同點,也有值得我們注意的不同點,那麼接下來我們先來看看不同點

列表和字典的不同點

乙個很重要的不同點是列表中的元素是有自己明確的「位置」的,所以即使看似相同的元素,只要在列表所處的位置不同,它們就是兩個不同的列表

# 如果==左右兩邊相等,值為true,不相等則為false。

print(1 == 1)

# 1等於1,所以值為true

print(1 == 2)

# 1不等於2,所以為false

students1 = ['小明','小紅','小剛']

students2 = ['小剛','小明','小紅']

print(students1 == students2)

scores1 =

scores2 =

print(scores1 == scores2)

#test

#true

#false

#false

#true

而字典相比起來就顯得隨和很多,調動順序也不影響。因為列表中的資料是有序排列的,而字典中的資料是隨機排列的。

這也是為什麼兩者資料讀取方法會不同的原因:列表有序,要用偏移量定位;字典無序,便通過唯一的鍵來取值。

列表和字典的相同點

我們先來看第乙個共同點:在列表和字典中,如果要修改元素,都可用賦值語句來完成。看一下**:

list1 = ['小明','小紅','小剛','小美']

list1[1] = '小藍'

print(list1)

dict1 =

dict1['小明'] = '女'

print(dict1)

#test

#'小明', '小藍', '小剛', '小美']

#

所以,上面修改小剛成績的時候,其實直接用賦值語句即可,del語句通常是用來刪除確定不需要的鍵值對。

scores = 

#del scores['小剛']

#如果只需要修改鍵裡面的值,可不需要del語句

scores['小剛'] = 92

第二個共同點其實之前已經略有提及,即支援任意巢狀。除之前學過的資料型別外,列表可巢狀其他列表和字典,字典也可巢狀其他字典和列表。

列表巢狀列表

students = [['小明','小紅','小剛','小美'],['小強','小蘭','小偉','小芳']]

print(students[1][1])

#test

#小蘭

字典巢狀字典

scores = ,

'第二組':

}print(scores['第二組']['小芳'])

#test

#88

列表和字典相互巢狀

# 最外層是大括號,所以是字典巢狀列表,先找到字典的鍵對應的列表,再判斷列表中要取出元素的偏移量

students =

print(students['第一組'][3])

#取出'第一組'對應列表偏移量為3的元素,即'小美'

# 最外層是中括號,所以是列表巢狀字典,先判斷字典是列表的第幾個元素,再找出要取出的值相對應的鍵

scores = [,]

print(scores[1]['小強'])

#先定位到列表偏移量為1的元素,即第二個字典,再取出字典裡鍵為'小強'對應的值,即99。

#test

#小美#99

python1 1列表知識點

定義列表 a 1,2,3,4,5,6,7,hello world 列表索引從0開始,指定位置提取元素 print a 3 print a 列表的正向切片,不包括 4 位置資料 print a 0 4 列表的逆行向切片,不包括 1 位置資料 print a 4 1 指定位置插入元素 第一種方法 a 3...

python 11 反射與異常

反射與異常加上類似於反射的檔案的操作都將在下面以 的形式體現。一,反射 coding utf 8 usr bin env python3 author book miki 主要學習 getattr setattr hasattr delattr defbulk self print s wangwa...

Python (五)列表 元組 字典

list 列表 是 python 中使用最頻繁的資料型別。列表可以完成大多數集合類的資料結構實現。它支援字元,數字,字串甚至可以包含列表 所謂巢狀 列表用 標識。是python最通用的復合資料型別。列表中的值得分割也可以用到變數 頭下標 尾下標 就可以擷取相應的列表,從左到右索引預設0開始的,從右到...