天天看點

python自學入門 清單與字典清單與字典前言一、清單二、資料類型:字典三,清單和字典的異同

清單與字典

文章目錄

  • 清單與字典
  • 前言
  • 一、清單
    • 1.清單元素的提取
      • 1.1,單個元素的提取
      • 1.2,多個元素的提取
    • 2.清單增加/删除元素
  • 二、資料類型:字典
    • 1.什麼是字典
    • 2.從字典提取元素
    • 3.給字典更改和删除元素
  • 三,清單和字典的異同
    • 1.清單與字典的不同點
    • 2.清單與字典的相同點
      • 2.1,清單嵌套清單
      • 2.2,字典嵌套字典
      • 2.3,清單和字典互相嵌套

前言

截至目前,我們已經掌握了3種資料類型:整數、浮點數、字元串。這一關我們就要學習兩種新的資料類型:清單、字典。

不過在這之前,我想先和你聊一聊“計算機”與“資料”之間水乳交融的關系。

計算機名字裡就有【計算】兩字,如果計算機離開了資料,就如巧婦難為無米之炊。是以說,資料對于計算機很重要。

總的來說,計算機有3種方式利用資料:

第一種:直接使用資料,比如print()語句,可以直接把我們提供的資料列印出來,通常所見即所得。

第二種:計算和加工資料,計算機會先計算/加工 資料,再用print()語句

這兩個print語句,計算機都是先【計算和加工資料】,再把print()括号裡的資料列印到螢幕裡。

第三種:用資料做判斷是怎麼一回事。

#計算機會使用資料來做判斷

a = int(input('請輸入你的年齡:'))
​
if a<0:
    print('你還在娘胎裡呢。')
elif a == 0:
    print('歡迎來到這個世界。')
elif a < 18:
    print('小小的年紀還不懂什麼是愛')
else:
    print('你已經是個成熟的大人了,要學會照顧自己。')
           

可以看出,計算機在這裡是【利用資料用做邏輯判斷】:

那現在我們對【計算機】和【資料】的關系有了一定的了解吧,也正因為資料的重要性,是以對于程式設計新手來說,掌握主要的資料類型是重中之重。

現在我們會接觸兩種新的資料類型——**清單和字典,**你會發現,它們比我們學過的“整數、浮點數、字元串”更加進階,更有“包容性”。

為什麼這麼說呢?前面學的幾種類型,每次指派隻能儲存一條資料。如果我們需要使用很多資料的時候,就會很不友善。

而清單和字典的作用,就是可以幫我們存儲大量資料,讓計算機去讀取和操作。

一、清單

現在我們會接觸兩種新的資料類型——清單和字典,**你會發現,它們比我們學過的“整數、浮點數、字元串”更加進階,更有“包容性”。

因為**前面學的幾種類型,每次指派隻能儲存一條資料。如果我們需要使用很多資料的時候,就會很不友善。

而清單和字典的作用,就是可以幫我們存儲大量資料,讓計算機去讀取和操作。

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

[‘小明’,‘小紅’,‘小剛’]就是一個清單。

一個清單需要用中括号**[ ]把裡面的各種資料框起來,裡面的每一個資料叫作“元素”。每個元素之間都要用英文逗号隔開**,這就是清單的标準格式。

1.清單元素的提取

1.1,單個元素的提取

從清單提取單個元素,這就涉及到一個新的知識點:偏移量。清單中的各個元素,好比教室裡的某排學生那樣,是有序地排列的,也就是說,每個元素都有自己的位置編号(即偏移量)。

與字元串的索引一樣,清單索引從 0 開始,第二個索引是 1,依此類推。

通過索引清單可以進行截取、組合等操作。

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list[0] )
#列印出['red']
print( list[1] )
#列印出['green']
           

索引也可以從尾部開始,最後一個元素的索引為 -1,往前一位為 -2,以此類推

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list[-1] )
#列印出['black']
print( list[-2] )
#列印出['white']
           

1.2,多個元素的提取

這種用冒号來截取清單元素的操作叫作切片,顧名思義,就是将清單的某個片段拿出來處理。這種切片的方式可以讓我們從清單中取出多個元素。

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

print(list2[:])
# 列印出[5,6,7,8,9]
print(list2[2:])
# 列印出[7,8,9]
print(list2[:2])
# 列印出[5,6]
print(list2[1:3])
#列印出[6,7]
print(list2[2:4])    
#列印出[7,8]
           

冒号左邊空,就要從偏移量為0的元素開始取;右邊空,就要取到清單的最後一個元素。冒号左邊數字對應的元素要拿,右邊的不動(左閉右開)

我們要注意一個細節:偏移量取到的是清單中的元素,而切片則是截取了清單的某部分,是以還是清單

2.清單增加/删除元素

當我們想要給清單增加元素時,我們就需要用到append()函數給清單增加元素,append的意思是附加,增補。

append函數有以下特點:

1.append函數之後的參數隻能是一個(單個清單視為一個)

2.append函數之後的元素會添加在清單的末尾

3.append函數并不生成一個新清單,而是讓清單末尾新增一個元素。而且,列 表長度可變,理論容量無限,是以支援任意的嵌套。

list3 = [1,2]
list3.append(3)
print(list3)


list3.append([4,5])
print(list3)
           

代碼結果如下:

[1,2,3]

[1,2,3,[4,5]]
           

現在你已經知道如何增添清單中的元素了。接下來我們一起來看一下如何删除清單中的元素。

這時需要用到del語句,文法格式如下:

del 清單名[元素的索引]

students = ['小明','小紅','小剛','小美']
del students[1]
print(students)
           

代碼結果如下:

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

事實上del語句非常友善,既能删除一個元素,也能一次删除多個元素(原理和切片類似,左取右不取)。

掌握了這些,清單這種資料類型,你就算入門了。後續就是在練習和項目中不斷積累經驗,活用清單。接下來我們就來學習另外一種資料類型

二、資料類型:字典

1.什麼是字典

字典是另一種可變容器模型,且可存儲任意類型對象。

字典的每個鍵值 key=>value 對用冒号 : 分割,每個對之間用逗号(,)分割,整個字典包括在花括号 {} 中 。

字典中的鍵具備唯一性,而值可重複。

如果你不小心聲明了兩個相同的鍵的【鍵值對】,後出現的【鍵值對】會覆寫前面的【鍵值對】。

scores = {'小明': 95, '小紅': 90, '小明': 90}
print(scores)
           

代碼結果如下:

['小明':90,'小紅':90]
           

2.從字典提取元素

現在,我們嘗試将小明的成績從字典裡列印出來。這就涉及到字典的索引,和清單通過偏移量來索引不同,字典靠的是鍵。

scores = {'小明': 95, '小紅': 90, '小剛': 90}
print(scores['小明'])
           

代碼結果如下:

95
           

這便是從字典中提取對應的值的用法。和清單相似的是要用[ ],不過因為字典沒有偏移量,是以在中括号中應該寫鍵的名稱,即字典名[字典的鍵]。

3.給字典更改和删除元素

删除字典裡鍵值對的代碼是del語句del 字典名[鍵],而新增鍵值對要用到指派語句字典名[鍵] = 值

删除

album = {'周傑倫':'七裡香','王力宏':'心中的日月'}
del album['周傑倫']
print(album)
           

代碼結果如下:

{'王力宏':'心中的日月'}
           

可以看到,周傑倫這組字典的鍵值被删除了。

更改字典裡鍵值對要用到指派語句:字典名[鍵] = 值。

album = {'周傑倫':'七裡香','王力宏':'心中的日月'}
album['周傑倫'] = '十一月的蕭邦'
print(album)
print(album['周傑倫'])
           

代碼結果如下:

{'周傑倫':'十一月的蕭邦','王力宏':'心中的日月'}
十一月的蕭邦
           

三,清單和字典的異同

1.清單與字典的不同點

一個很重要的不同點是清單中的元素是有自己明确的“位置”的,是以即使看似相同的元素,隻要在清單所處的位置不同,它們就是兩個不同的元素。我們來看看代碼:

students1 = ['小明','小紅','小剛']
students2 = ['小剛','小明','小紅']
print(students1 == students2)

scores1 = {'小明':95,'小紅':90,'小剛':100}
scores2 = {'小剛':100,'小明':95,'小紅':90}
print(scores1 == scores2)
           

代碼結果如下:

True
False
           

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

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

2.清單與字典的相同點

第一個共同點:在清單和字典中,如果要修改元素,都可用指派語句來完成。看一下代碼:

list1 = ['小明','小紅','小剛','小美']
list1[1] = '小藍'
print(list1)

dict1 = {'小明':'男'}
dict1['小明'] = '女'
print(dict1)
           

代碼結果如下:

list1 = ['小明','小紅','小剛','小美']
list1[1] = '小藍'
print(list1)

dict1 = {'小明':'男'}
dict1['小明'] = '女'
print(dict1)
           

第二個共同點其實之前已經略有提及,即支援任意嵌套。除之前學過的資料類型外,清單可嵌套其他清單和字典,字典也可嵌套其他字典和清單。

2.1,清單嵌套清單

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

students這個清單是由兩個子清單組成的,現在有個問題是:我們要怎麼把小芳取出來呢?

可能你數着小芳是清單的第7個元素(從0開始),是以想students[7]不就能取到小芳嗎?

事情當然沒有那麼簡單,當我們在提取這種多級嵌套的清單/字典時,要一層一層地取出來,就像剝洋蔥一樣:

我們确定了小芳是在students[1]的清單裡,繼續往下看。

小芳是students[1]清單裡偏移量為3的元素,是以要取出小芳,代碼可以這麼寫:

students = [['小明','小紅','小剛','小美'],['小強','小蘭','小偉','小芳']]
print(students[1][3])
           

代碼結果如下:

小芳
           

2.2,字典嵌套字典

和清單嵌套清單也是類似的,需要一層一層取出來,比如說要取出小芳的成績,代碼是這樣寫:

scores = {
    '第一組':{'小明':95,'小紅':90,'小剛':100,'小美':85},
    '第二組':{'小強':99,'小蘭':89,'小偉':93,'小芳':88}
    }
print(scores['第二組']['小芳'])
           

代碼結果如下:

88
           

2.3,清單和字典互相嵌套

# 最外層是大括号,是以是字典嵌套清單,先找到字典的鍵對應的清單,再判斷清單中要取出元素的偏移量
students = {
    '第一組':['小明','小紅','小剛','小美'],
    '第二組':['小強','小蘭','小偉','小芳']
    }
print(students['第一組'][3])
#取出'第一組'對應清單偏移量為3的元素,即'小美'

# 最外層是中括号,是以是清單嵌套字典,先判斷字典是清單的第幾個元素,再找出要取出的值相對應的鍵
scores = [
    {'小明':95,'小紅':90,'小剛':100,'小美':85},
    {'小強':99,'小蘭':89,'小偉':93,'小芳':88}
    ]
print(scores[1]['小強'])
#先定位到清單偏移量為1的元素,即第二個字典,再取出字典裡鍵為'小強'對應的值,即99。