學習視頻地址:https://www.bilibili.com/video/BV1SE411N7Hi?p=38 作業地址:https://gitee.com/old_boy_education_python_28/teaching_plan/issues/I163NZ 以下內容僅供自己學習使用 #!/usr/bin/env python # -*- coding:utf-8 -*- # 1.有如下 v1 = {'郭寶元','alex','板哥','王二麻子'} v2 = {'alex','王二麻子'} # 請得到 v1 和 v2 的交集並輸出 print(v1&v2) # 請得到 v1 和 v2 的並集並輸出 print(v1|v2) # 請得到 v1 和 v2 的 差集並輸出 print(v1-v2) # 請得到 v2 和 v1 的 差集並輸出 print(v2-v1) # # 2.循環提示用戶輸入,如果輸入的內容在v1中存在,則追加到v2中,如果v1中不存在,則添加到v1中。(如果輸入N或n則停止循環) # v=input("enter,n or N to end:") # while v!='n' and v !='N': # if v in v1: # v2.add(v) # else: # v1.add(v) # print('v1:', v1) # print("v2:", v2) # v = input("enter,n or N to end:") # 3.is 和 == 的區別? #is是判斷兩邊內存地址是否相同 #==是判斷兩邊值是否相同 # 4.type和id的作用? #type輸出類型 #id輸出內存地址 # 5.看代碼寫結果並解釋原因 # v1 = {'k1':'v1','k2':[1,2,3]} v2 = {'k1':'v1','k2':[1,2,3]} result1 = v1 == v2 result2 = v1 is v2 print(result1) print(result2) # True # False #值相同,內存地址不同 print("---------6") # 6.看代碼寫結果並解釋原因 # v1 = {'k1':'v1','k2':[1,2,3]} v2 = v1 result1 = v1 == v2 result2 = v1 is v2 print(result1) print(result2) # True # True #v2=v1,將v2,v1指向同一個內存地址,所以兩者內存地址相同,值也相同 print("-------7") # 7.看代碼寫結果並解釋原因 # v1 = {'k1':'v1','k2':[1,2,3]} v2 = v1 v1['k1'] = 'meet' print(v2) #v2,v1指向同一個內存地址,所以當v1改變,v2也一起變 print("-------8") # 8.看代碼寫結果並解釋原因 #python是內存地址引用,列表裏面存的都是內存地址,不是真正的數據 v1 = '人生苦短,我用Python' v2 = [1,2,3,4,v1] v1 = "人生苦短,用毛線Python" print(v2) #[1, 2, 3, 4, '人生苦短,我用Python'] #"用python“開闢空間,v1指向了“用python”內存地址,v2中的元素5也指向了“用python”內存地址, # “用毛線python”開闢空間,後面v1重新指向了“用毛線python”開闢空間,v2指向不變,元素5還是指向“用python”空間 print("-------9") # 9.看代碼寫結果並解釋原因 # info = [1,2,3] userinfo = {'account':info, 'num':info, 'money':info}#此處值還是內存地址 info.append(9) print(userinfo) info = "題怎麼這麼多" print(userinfo) # {'account': [1, 2, 3, 9], 'num': [1, 2, 3, 9], 'money': [1, 2, 3, 9]} # {'account': [1, 2, 3, 9], 'num': [1, 2, 3, 9], 'money': [1, 2, 3, 9]} #info指向[]的內存地址 #userinfo中的值指向[]列表內存地址,當列表內容改變時,內存地址不變,print userinfo跟着改變 #info不再指向[]的內存地址,指向了“”字符串的內存地址,userinfo指向沒有改變 print("--------10") # 10.看代碼寫結果並解釋原因 # info = [1,2,3] userinfo = [info,info,info,info,info] info[0] = '不僅多,還特麼難呢' print(info,userinfo) #['不僅多,還特麼難呢', 2, 3] [['不僅多,還特麼難呢', 2, 3], ['不僅多,還特麼難呢', 2, 3], #['不僅多,還特麼難呢', 2, 3], ['不僅多,還特麼難呢', 2, 3], ['不僅多,還特麼難呢', 2, 3]] print("--------11") # 11.看代碼寫結果並解釋原因 # info = [1,2,3] userinfo = [info,info,info,info,info] userinfo[2][0] = '他扒拉我' print(info,userinfo) #['他扒拉我', 2, 3] [['他扒拉我', 2, 3], ['他扒拉我', 2, 3], #['他扒拉我', 2, 3], ['他扒拉我', 2, 3], ['他扒拉我', 2, 3]] print("--------12") # 12.看代碼寫結果並解釋原因 data = {} for i in range(10): data['user'] = i print(data) #{'user': 9} print("--------13") # 13.看代碼寫結果並解釋原因 # data_list = []#010 [020,020,020……] data = {}#020 {'user':9} for i in range(10): data['user'] = i#1.增,2.改,3.改…… data_list.append(data)#010.append(020) print(data_list) #[{'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, # {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}] print("--------14") # 14.看代碼寫結果並解釋原因 # data_list = []#010 for i in range(10): data = {}#012 {'user':0},每轉一圈,開闢一個新空間,013 {'user':1} #小數據池的駐留機制 #數字,字符串,布爾值,不可變數據類型 data['user'] = i data_list.append(data) #010.append(012), 010.append(013)…… print(data_list) #[{'user': 0}, {'user': 1}, {'user': 2}, {'user': 3}, {'user': 4}, # {'user': 5}, {'user': 6}, {'user': 7}, {'user': 8}, {'user': 9}] print("--------15") # 15.看代碼寫結果(以下內容如果不是很清楚的多畫畫圖) # v1 = [1,2,3,4,5] v2 = [v1,v1,v1] v1.append(6) print(v1) print(v2) # [1, 2, 3, 4, 5, 6] # [[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]] print("--------16") # 16.看代碼寫結果 # v1 = [1,2,3,4,5] v2 = [v1,v1,v1] #v2=[[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]] v2[1][0] = 111 #v2=[[111,2,3,4,5],[111,2,3,4,5],[111,2,3,4,5]] v2[2][0] = 222 #v2=[[222,2,3,4,5],[222,2,3,4,5],[222,2,3,4,5]] print(v1) print(v2) # [222, 2, 3, 4, 5] # [[222, 2, 3, 4, 5], [222, 2, 3, 4, 5], [222, 2, 3, 4, 5]] print("--------17") # 17.看代碼寫結果,並解釋每一步的流程。 # v1 = [1,2,3,4,5,6,7,8,9] v2 = {} for item in v1:#循環列表獲取每個元素 if item < 6: continue#跳過此循環,進行下一次循環 if 'k1' in v2: v2['k1'].append(item)#如果存在就通過k1獲取值,並添加當前元素 else:#k1不在v2的字典中存在時 v2['k1'] = [item]#添加一對的鍵值對 print(v2) #{'k1': [6, 7, 8, 9]} print("--------18") # 18.看代碼寫結果 # import copy v1 = "alex" #小數據池駐留機制:數字,字符串,布爾值 #只要是自己定義的,只要內容一致,不管長度多少,就是共用同一個內存地址 v2 = copy.copy(v1) v3 = copy.deepcopy(v1) print(v1 is v2)#true print(v1 is v3)#true print("--------19") # 19.看代碼寫結果 # import copy v1 = [1,2,3,4,5] #列表、字典等可變數據類型,沒有小數據池駐留情況 v2 = copy.copy(v1)#新開一殼 v3 = copy.deepcopy(v1)#新開一殼 print(v1 is v2)#false print(v1 is v3)#false print("-------20") # 20.看代碼寫結果 # import copy v1 = [1,2,3,4,5] v2 = copy.copy(v1) v3 = copy.deepcopy(v1) #數字屬於不變元素,深淺拷貝都共用,下面全部爲true print(v1[0] is v2[0]) print(v1[0] is v3[0]) print(v2[0] is v3[0]) print("--------21") # 21.看代碼寫結果 # import copy v1 = [1,2,3,4,[11,22]] v2 = copy.copy(v1) v3 = copy.deepcopy(v1) print(v1[-1] is v2[-1])#true,淺拷貝只拷貝第一層 print(v1[-1] is v3[-1])#false,深拷貝,可變元素開闢新空間 print(v2[-1] is v3[-1])#false,深拷貝,可變元素開闢新空間 print("--------22") # 22.看代碼寫結果 # import copy v1 = [1,2,3,{"name":'寶元',"numbers":[7,77,88]},4,5] v2 = copy.copy(v1) #淺拷貝只拷貝第一層,不變元素共用,可變元素聯動 print(v1 is v2) #false新開了一個殼,v1,v2內存地址不同 #下面全部爲true print(v1[0] is v2[0]) print(v1[3] is v2[3]) print(v1[3]['name'] is v2[3]['name']) print(v1[3]['numbers'] is v2[3]['numbers'])#注意,這個是t print(v1[3]['numbers'][1] is v2[3]['numbers'][1]) print("-------23") # 23.看代碼寫結果 # import copy v1 = [1,2,3,{"name":'寶元',"numbers":[7,77,88]},4,5] v2 = copy.deepcopy(v1) #deepcopy,不變元素共用,可變元素開闢新空間 print(v1 is v2) #false print(v1[0] is v2[0]) #true print(v1[3] is v2[3]) #false print(v1[3]['name'] is v2[3]['name']) #true,"寶元“屬於不變元素 print(v1[3]['numbers'] is v2[3]['numbers']) #false,false屬於可變元素 print(v1[3]['numbers'][1] is v2[3]['numbers'][1]) #true,數字屬於不變元素
python學習-day5_作業(集合,深淺拷貝)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.