Python複雜數據類型(列表、元組、字典)詳解


承接上篇文章,先補充一些關於列表的一些常用屬性

補充

arr.sort()/arr.sorted() 對數組進行排序

info = ['5', '4', '3']
detail = ['email', 'utils', 'hard', 'aus']
print(info)
info.sort()
print(info)

print(sorted(detail))
print(detail)

在這裏插入圖片描述
從以上效果我們可以清楚的看出當我們調用arr.sort()時,在打印我們的的數組的時候,會發新數組會按照順序排序並打印出來,當我們調用arr.sorted()時數組會進行排序,但是當我們重新打印數組時會發現數組還是按照之前的順序進行打印,這就說明sort()是對數組永久排序,sorted()是對數組進行臨時排序

arr.reverse()/len(arr)

detail = ['email', 'utils', 'hard', 'aus']
print(detail)
detail.reverse()
print(detail)
print(len(detail))

在這裏插入圖片描述
通過調用arr.reverse()我們可以清楚看到數組被倒着打印出來了,調用len(arr)返回的是數組的長度
歐克,到這裏我們的補充就結束了,下面正式開始我們的正文

操作列表

遍歷整個列表

detail = ['email', 'utils', 'hard', 'aus']
for i in detail:
    print("the print content is"+i.title())

在這裏插入圖片描述
通過使用for…in…語句我們就可以非常輕鬆的遍歷我們的數組,這裏的縮進一定不能錯,因爲打印的內容是在for循環中,一定不要讓print()語句和for循環平級,這裏的print相當於for循環的孩子

detail = ['email', 'utils', 'hard', 'aus']
for i in detail:
    print("the print content is"+i.title())
print("it is finish")

在這裏插入圖片描述
看我們以上的代碼,我們的最後的print()語句是個for循環語句的起始位置都是相同的,說明它不是for循環內的語句,代碼是一行行執行的,所以當我們的for循環語句執行結束後,纔會執行我們的最後一個print()語句

操作數值列表

數值列表顧名思義就是創建一組只有數字的列表,如下:

util = [3,4,5,6,9]

但是當我們想要一下子生成一些數值列表,一個個手動創建卻很麻煩,range()應運而生

for i in range(1,6):
    print(i)

在這裏插入圖片描述
看,這樣子是不是方便了很多,這裏你會發現range(start,end)的end值卻沒有打印出來,start是從那個數字開始,end結束值是end-1

spuare = []
for i in range(0,11):
    test = i ** 2
    spuare.append(test)

print(spuare)

arr = [4,5,8,3,11,4,2]
print(max(arr))
print(min(arr))
print(sum(arr))

在這裏插入圖片描述
我們來一行行的看,首先我們循環遍歷了一個0-10的數,然後遍歷的每一項的值都進行平方運算,將運算過的值添加到我們提前聲明好的空數組中,最後等for循環執行完畢,打印我們之前聲明的數組,就有我們想要的數據
然後就是聲明一個arr的數值列表,max(arr) 打印出數組中的最大的值,min顧名思義就是最小的,sum就是對數組中的每一項進行求和運算
然後我們來一點難的列表小例子,來加深印象,這裏可能有點難,建議多看幾遍

a = [i ** 2 for i in range(0, 11)]
print(a)

在這裏插入圖片描述
你會發現這個的運行效果和上面的那個運行結果是相同的,其實上面的代碼和當前的代碼效果是一樣的,這裏我們需要從後往前看,這裏我們是執行的for循環,也可以看作for循環的優先級比較高,for循環先給我們的i進行了賦值,然後在執行了平方運算,就得到了我們的結果
再來一個難題:如何拿到一個數組中的指定2個或多個指定的下標下的值?
簡單點就是如何拿到test = [0,1,3,7,4,6] 中第2個下標和第5個下標的值呢

test = [0,1,3,7,4,6]
print(test[2])
print(test[5])

在這裏插入圖片描述
這不是很簡單嘛,其實這時最笨的方法,那我們如何通過一步拿到指定多個下標下的值呢

test = [0,1,3,7,4,6]
a=[test[i] for i in [2,5]]
print(a)

在這裏插入圖片描述
這裏你會驚奇發現,執行的效果和上面的一樣,我們來看代碼,首先同上先執行for 循環,將我們定義的數組[2,5]的值分別賦值給i 然後會執行test[i]就是test[2],test[5]了,然後將值返給a的數組就可以拿到我們想要的結果了,這裏有點繞,記得多看看多練練

切片

訪問部分數組列表中的值就是切片

detail = ['email', 'utils', 'hard', 'aus']
print(detail)
print(detail[0:3])

在這裏插入圖片描述
這裏也沒什麼好講的,這裏就是訪問數組中第0,1,2索引下面的值

detail = ['email', 'utils', 'hard', 'aus']
print(detail)
print(detail[2:])
print(detail[-3:])

在這裏插入圖片描述
這裏的detail[2:] 就是從detail[2]到detail的最後一個索引
detail[-3:]倒着數的第三個到最後一個

遍歷切片

detail = ['email', 'utils', 'hard', 'aus']
for i in detail[0:3]:
    print(i)

在這裏插入圖片描述
這裏的detail[0:3]先拿到detail中索引爲0,1,2的值,然後再進行遍歷分別拿到每一項

複製列表

detail = ['email', 'utils', 'hard', 'aus']
print(detail)
util = detail[:]
print(util)
detail.append("apple")
util.append("orange")
print(detail)
print(util)

在這裏插入圖片描述
這裏我們調用detail[:]就相當於將detail的所有值寫入到我們的新列表中,爲了清楚看出這是兩個列表,我們分別向這兩個列表中添加了不同的數據

detail = ['email', 'utils', 'hard', 'aus']
detail.append("aaple")
util = detail
util.append("orange")
print(util)
print(detail)

在這裏插入圖片描述
可以看到,當我們使用等號將列表賦值給另一個新的列表時,操作的還是同一個列表中的數據

元組

列表非常適合用於存儲在程序運行期間可能變化的數據集。列表是可以修改的,這對處理網站的用戶列表或遊戲中的角色列表至關重要。然而,有時候你需要創建一系列不可修 改的元素,元組可以滿足這種需求。Python將不能修改的值稱爲不可變的的 ,而不可變的列表被稱爲元組 。
元組看起來猶如列表,但使用圓括號而不是方括號來標識。定義元組後,就可以使用索引來訪問其元素,就像訪問列表元素一樣。

detail = (30,50,80)
print(detail[1])
detail[1] = 40
print(detail)

在這裏插入圖片描述
我們先定義了元組,我們使用訪問列表的方式可以輕鬆的訪問元組中的數據,但是當我們修改元組中指定索引下的值時,給我們返回了Typeerror 還記得元組的特性麼,元組的值是不可修改的喲

遍歷元組

detail = (30,50,80)
for i in detail:
    print(i)

在這裏插入圖片描述
這裏可以看出,遍歷元組的方式和遍歷列表的方式是相同的

修改元組變量

雖然我們不能修改元組中的變量,但是我們可以修改存儲元組的變量

detail = (30,50,80)
for i in detail:
    print(i)
util = (80,50,30)
for value in util:
    print(value)

在這裏插入圖片描述這裏相當於重新給元組變量賦值(覆蓋)

字典

字典典 是一系列鍵—值值對對 。每個鍵 都與一個值相關聯,你可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字符串、列表乃至字典。

字典初識

detal = {'color': 'pink','fruit' : 'apple'}
print(detal)
print(detal['fruit'])

在這裏插入圖片描述
可以看到,字典是由{}包裹的鍵值對,通過訪問鍵可以輕鬆獲取到鍵所對應的值

添加鍵值對

detal = {'color': 'pink','fruit' : 'apple'}
detal['wear']= 'shoes'
print(detal)

在這裏插入圖片描述
可以看到,添加鍵值對就是在字典中進行賦值(就相當於聲明鍵值對)

修改鍵所對應的值

detal = {'color': 'pink','fruit' : 'apple'}
detal['wear']= 'shoes'
print(detal)
detal['fruit'] = 'banana'
print(detal)

在這裏插入圖片描述

刪除鍵值對

detal = {'color': 'pink','fruit' : 'apple'}
detal['wear']= 'shoes'
print(detal)
detal['fruit'] = 'banana'
print(detal)
del detal['color']
print(detal)

在這裏插入圖片描述
通過調用del 字典中的指定鍵 就可以將字典中指定鍵以及所對應的值進行刪除操作

遍歷字典

detal = {'color': 'pink','fruit' : 'apple'}
for key,value in detal.items():
    print(key+'--'+value)

在這裏插入圖片描述
遍歷字典中的所有鍵或值
當我們只想拿到字典中所有的鍵或者值時可以使用以下方法

detal = {'color': 'pink','fruit' : 'apple'}
for item in detal.keys():
    print(item)

在這裏插入圖片描述

detal = {'color': 'pink','fruit' : 'apple'}
for item in detal.values():
    print(item)

在這裏插入圖片描述

detal = {'color': 'pink','fruit' : 'apple','big':'apple'}
for i in set(detal.values()):
    print(i)

在這裏插入圖片描述
在我們操作多字典時難免會遇到重複值,爲了避免重複值的發生,我們可以調用set方法進行去重操作

嵌套

detal = {'color': 'pink','fruit' : 'apple'}
detal1 = {'color': 'dark','fruit' : 'banana'}
detal2 = {'state':'acc','content':'win'}
arr = [detal,detal,detal2]
print(arr)

在這裏插入圖片描述
將三個字典放入到一個列表中

字典中存儲列表

detal = {'color': 'pink','fruit' : ['apple','banana','orange']}
print(detal)
for i in detal['fruit']:
    print(i)

在這裏插入圖片描述

字典中存儲字典

users = {
    'aeinstein': {'first': 'albert', 'last': 'einstein', 'location': 'princeton', },
    'mcurie': {'first': 'marie', 'last': 'curie', 'location': 'paris', },
}
for username, user_info in users.items():
    print("\nUsername: " + username)
    full_name = user_info['first'] + " " + user_info['last']
    location = user_info['location']
    print(full_name)

在這裏插入圖片描述
字典中存儲字典時,當我們循環遍歷拿到字典中字典的值時,是對字典值的鍵進行操作獲取字典中字典的值,這裏很繞

文章的中的知識點參考《Python編程:從入門到實踐》相當於是對於本書的解讀以及加入自己的理解

歐克,到這裏本篇文章就算時結束了,一定要記得多練習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章