Day03 八戒大戰後裔
豬八戒看守南天門時,有一天看到了後裔。豬八戒想起後裔對嫦娥姐姐做的事情,感到十分生氣。於是,豬八戒就追打起後裔。後裔被這突然起來的豬嚇到了,於是慌張逃跑,最後後來到了高台上。
後裔首先看到一個一塊很大的表懸在半空中,表的一端系著一個氣球,上面寫著表的名字(列表(list)特點:有序的(有索引、定義和顯示的順序是一致的)、可變的(既可以改變元素的內容也可以自動(擴縮)容)、可重復的、可以存儲任何數據類型的元素)。表上站列著各種各樣的人,有阿拉伯人,有歐美人,還有肉丸子、字典、大餅、蒲團在隊列裡。有的人還長得一模一樣。於是,後裔就假裝若無其事的躲到了一個蒲團上(append(obj):將obj元素追加到列表的末尾)。豬八戒不就也趕到,他一眼就發現後裔藏在隊列裡,所以,八戒叫來了飛毯,飛毯很快就根據表下的數字編號鎖定了後裔的位置(1).獲取元素列表名配合下標獲取 --> 例如:lt[0],lt[-1]),並來到了後裔上方,將後裔吸到毯上,並留下了一個阿拉伯人(2).設置元素(和str有區別)列表名配合下標 = … --> 例如:lt[4] = “武大郎”)。後裔十分驚訝,但很快就逃脫,並且用法術克隆出好幾條大表(對於*操作而言:將列表中的元素重復出現n次,以新的列表返回),並用十字架連接在一起(對於+操作而言:將兩個列表對象中的元素都組合起來以一個新的列表返回),向豬八戒宣戰。豬八戒一看對方陣勢強大,於是計上心來,他派出一個小豬拿著把笤帚,悄悄來到後裔的隊列最後面,然後向前一掃,隊列瞬間消失,只留下一個空表懸在半空中(clear():清空列表,元素沒了,列表對象還在)。後裔一看,不僅怒火中山,拿起一把大砍刀就向豬八戒的隊列砍去,有的人被大刀直接砍消失了,有的表都被大刀砍碎了(del關鍵字配合列表對象/元素使用.目的:回收列表對象,回收其中的元素內容)。豬八戒一看後裔失了心智,於是趕緊派更大的飛毯去後裔的隊列裡截取士兵(列表的切片操作:格式和特點和str一模一樣…)。後裔一看情況不妙,慌忙逃竄,並向豬八戒下戰書說下午再戰。
八戒打贏了後裔,開心的吃起來牛肉丸串。但是他同時感到擔心,打敗後裔的隊伍是臨時拼湊的,人心渙散,說變就變,沒什麼戰斗力,必須要建立一支自己的隊伍。八戒看著手中的牛肉串,恍然大悟。他把牛肉丸串變得像表一樣大,牛肉丸上同樣站著士兵,所不同的是,牛肉丸上的士兵意志堅定,不會改變(元組特點:有序的(有索引、定義和顯示的順序是一致的)、不可變的(和str一樣理解)、可重復的、可以存儲任何數據類型的元素),且不能從隊伍最後面加入進去。笤帚對他們根本不起作用(思考:元祖有沒有類似於列表的append或者clear函數?沒有,因為append和clear這類函數改變的都是容器對象內部的元素內容,這和不可變所沖突)。而且,他們非常團結,大刀只能砍碎牛肉丸,不能砍倒他們一個(del關鍵字配合元祖對象使用.目的:回收整個元祖對象,但是無法回收其任何一個元素)。他們聽飛毯和八戒的話。八戒發現有的丸子上只有一個士兵,就給他配了一條狗(元祖名 = (值1,)
【注意】:定義元祖並且只有一個元素,必須在元素後顯示的加上一個逗號)。
有了自己的隊伍,八戒喜出望外。但離真正強大還差一個智囊團。所以八戒掏出師傅給他的一部字典(字典特點:無序性(沒有索引,通過鍵找值)、可變的數據類型(值可變、鍵不可變)),將其變大,然後網羅天下軍師,把他們安排到字典上(字典的結構:鍵值對組合 --> key-value對象)。這些軍師每個人都有自己的外號(鍵(key):唯一性(不可重復)、不可變的數據類型(例如:list就不能作為鍵)),且各不相同。如果有相同的外號,則後來的取而代之(在定義字典對象的時候如果出現了重復的鍵,保留鍵名的同時,將後者的值覆蓋前面的值)。如果沒有軍師的名字,可以直接將其和他隨從加進去(在添加新的鍵值對的過程中,如果原字典對象中沒有此鍵,那麼就將其鍵值對一並加入進去,稱為一個元素dic2 = {“name”:“韓梅梅”,“age”:23,“height”:165.0,“name”:“李雷”} dic2[‘weight’] = 120)。他們還可以任意的挑選隨從(值(value):沒有任何要求,可以是任何類型的數據,甚至可以重復)。由於軍師沒什麼戰斗力,笤帚能一把把字典上的人打掃干淨(clear():清空字典元素,保留空字典對象)。同樣,大刀也能把軍師砍死,把字典砍碎(和關鍵字del配合使用:目的:回收鍵值對組合,或者整個字典對象)。如果你要找某個軍師(對於通過鍵查找值的情況可以分為以下兩種方式來實現:),可以通過兩種方法,一種是直接喊其外號(方式一:字典名[鍵名] 如果鍵不存在,報錯;出現KeyError類型的異常),當然,可能會無人應答。還有一種是用一雙大手將其捧出來,如果人不在的話,大手會告訴你為空(方式二:字典嗎.get(鍵名) 如果鍵不存在,不會報錯,會返回給程序一個None值;此方式比較安全/友好(更加好用))。
八戒整頓好字典陣營後,就開始吃大餅。有個軍師就跑來告訴八戒說,當前我們隊伍機動性較差,需要打造一支千變萬化而又能協同配合的隊伍。八戒看著手中的大餅(集合(set)
特點:無序性(沒有索引,每一次顯示的效果都不一樣)、唯一性(不可重復)、 可變的、只能存放不可變的數據),頓時有了主意。他把大餅作為載體,士兵可以在大餅上隨意走動,但是每名士兵都是唯一的(使用場景:在實際開發過程中,經常用於對數據進行去重(過濾))。大餅與大餅之間可以重合(&:取交集),可以聯合(|:取並集),可以相減(-:取差集),可以先聯合再減去重合部分(^:先取並集再捨棄交集部分)。但是,笤帚和大砍刀都能對其起作用(clear():清空集合,保留外殼 。和關鍵字del配合使用: 目的:回收集合元素,或者回收整個集合對象)。如果要開除某個士兵,可以通過在其下方鋸一塊小圓餅,該小圓餅就會將該士兵移走(思考:刪除"貂蟬"這個數據,改這麼做到?可以使用remove(obj)函數來實現…)。如果需要,大餅還可以轉化成列表士兵(將集合轉換為列表 --> 使用轉換函數list())。
八戒放心的吃完午餐,靜等下午後裔到來。午後時分,後裔帶著大批隊伍趕到。豬八戒鎮定自若。可是,現在天庭頒布了新規定,單挑要走七個流程。第一個比賽項目是(算數運算符:符號:+ - * / %(取余、取模) //(取整) **(開方))算數,加減乘除,取余,取整,開方。八戒痛失開局。
第二個項目是比體重(比較運算符:符號:> >= < <= ==(全等) !=(不等於)。特點:比較運算的結果一定是布爾值(True/False)),看誰的大。八戒笑哈哈,扳回一局。
第三個項目是傳授弟子武藝(賦值&混合賦值運算符:賦值運算符符號:= 混合賦值運算符符號:+= -= *= /= %=),讓他們去比武。八戒輸了。。。
第四個項目是比拼內人的邏輯能力(邏輯運算符 符號:and(邏輯與,並且,去交集) 總結:and操作,滿足一假即假的特點,理解為:對False敏感;or(邏輯或,或者,取並集) or操作,滿足一真即真的特點,理解為:對True敏感、not(邏輯非,取反)。特點:運算符兩側的數據類型一定是布爾型,結果也是布爾型)。八戒和後裔都沒有媳婦,所以各從隊伍中選了一名女警察來比拼。這一把八戒贏了。
第五個項目是選兩名士兵到高台最下面的2列石階上比賽。每名軍士會變成幾個小朋友,有男童,有女童,並排站列。然後與對方的小朋友隊列進行比較。能按照規則計算得到最後結果的一方贏(位運算符:長處:是運算效率最高的運算符,直接是底層二進制的運算。符號:&(按位與)、|(按位或)、^(按位異或)、<<(左移)、>>(右移))。這一把,八戒痛失好局。
第六個項目為猜臥底游戲(成員運算符:作用:運用對於容器對象的判斷,結果都是布爾值;判斷某個元素是否存在於容器中。符號:in / not in)。因為第五個項目中,有的對方陣營的小朋友跑到了己方陣營,所以要把小臥底挑出來。八戒在猴哥身邊呆了那麼久,也學得了一些火眼金睛之法,於是一眼就挑中了對方的小臥底。這一把,八戒贏了
第七個項目是 讓挑選出來的小臥底自己選擇跟誰(三元/三目運算符:格式:表達式1 if 條件表達式 else 表達式2)。八戒和後裔各開出待遇,如果和小朋友提出的條件滿足,就讓可以領走小朋友。最終根據小朋友的數量決定勝負。
最終,八戒險勝後裔!撒花~