1.5 其它核心數據類型
阿新 • • 發佈:2018-01-01
def rac ack spa ear 核心數 發現 you 獲得 (一)空類型:None
1 >>> l = [1,2,3,8,89,77] 2 >>> x = l.sort() 3 >>> x 4 >>> type(x) 5 <class ‘NoneType‘> 6 因為sort()函數沒有返回對象,即x沒有指向任何對象。
1 >>> type(None) 2 <class ‘NoneType‘> #None是有自己的類型的,NoneType 3 >>> 4 >>> type(‘‘) #空字符串的類型還是str 5 <class ‘str‘>
所以千萬不要把空字符串、None這兩者搞混了
(二)類型對象 type (obj) ,參數可以是對象,也可以是表達式(因為表達式的作用就是生成對象的)。如果在寫代碼時不知道一個變量或對象的類型可以這麽用。
1 >>> type(5) 2 <class ‘int‘> 3 >>> a = ‘王滿意‘ 4 >>> type(a) 5 <class ‘str‘> 6 >>> type(3.14) 7 <class‘float‘>
(三)布爾 bool : True、False 表示表達式條件是否成立 給大家扯點沒用的:bool的本質 True 對應整數1 False 對應整數0
1 >>> True + 1 2 2
在實踐中,用bool()函數判斷一個對象是True、False更有用些,我所知道的幾種類型的判斷結果都已經列出來了,大家可以自己多練習一下看看判斷結果。
1 >>> bool(‘‘) 2 False 3 >>> bool(0) 4 False 5 >>> bool(None)6 False 7 >>> bool(1) 8 True 9 >>> bool(1.0) 10 True 11 >>> bool(‘王滿意‘) 12 True 16 >>> def my_func(x): 17 pass 18 19 >>> bool(my_func) 20 True 21 >>> class my_cls(): 22 pass 23 24 >>> bool(my_cls) 25 True 26 >>> bool({‘s‘:1}) 27 True 28 >>> bool((1,2,3)) 29 True 30 >>>
>>> bool([])
False
1 #創建一個集合 2 >>> my_set={1,2,3,4,5,6,7,8} 3 4 #判斷某個元素是否在集合中 5 >>> 4 in my_set 6 True 7 8 #向 s1 中增加元素 x 9 >>> s1 10 {1, 2, 6, 7, 8} 11 >>> s1.add(9) 12 >>> s1 13 {1, 2, 6, 7, 8, 9} 14 15 16 #從 s1 中刪除元素 x, 如果x在s1中不存在則會報錯 17 >>> s1 18 {1, 2, 6, 7, 8, 9} 19 >>> s1.remove(2) 20 >>> s1 21 {1, 6, 7, 8, 9} 22 >>> s1.remove(10) 23 Traceback (most recent call last): 24 File "<pyshell#261>", line 1, in <module> 25 s1.remove(10) 26 KeyError: 10 27 >>> 28 29 30 #如果在 s1 中存在元素 x, 則刪除,沒有的話不會報錯 31 >>> s1 32 {1, 6, 7, 8, 9} 33 >>> s1.discard(6) 34 >>> s1 35 {1, 7, 8, 9} 36 >>> s1.discard(10) 37 >>> s1 38 {1, 7, 8, 9} 39 40 41 #刪除並且返回 s1 中的一個不確定的元素, 如果s1為空則報錯 42 >>> s1 43 {1, 7, 8, 9} 44 >>> s1.pop() 45 1 46 >>> s1 47 {7, 8, 9} 48 >>> s1.pop() 49 7 50 >>> s1.pop() 51 8 52 >>> s1.pop() 53 9 54 >>> s1.pop() 55 Traceback (most recent call last): 56 File "<pyshell#281>", line 1, in <module> 57 s1.pop() 58 KeyError: ‘pop from an empty set‘ 59 >>> 60 61 62 #獲取集合中的元素個數 63 >>> len(my_set) 64 7 65 66 #刪除 s1 中的所有的元素 67 >>> s1 = {1,2,3} 68 >>> s1 69 {1, 2, 3} 70 >>> s1.clear() 71 >>> s1 72 set() 73 74 75 76 #獲得my_set()的一個復制,測試發現,這個復制會在內存中生成新的對象,即修改復制來的集合不會影響原集合中的元素值 77 >>> s = my_set.copy() 78 >>> s 79 {1, 2, 3, 4, 5, 6, 7} 80 >>> 81 >>> s.remove(7) 82 >>> my_set 83 {1, 2, 3, 4, 5, 6, 7} 84 >>> s 85 {1, 2, 3, 4, 5, 6} 86 87 88 #看看字符串作為set的參數的效果 89 >>> s_set = {‘my name is wangmany‘} 90 >>> s_set 91 {‘my name is wangmany‘} 92 >>> 93 >>> s_set = set(‘my name is wangmany‘) 94 >>> s_set 95 {‘n‘, ‘a‘, ‘w‘, ‘e‘, ‘i‘, ‘s‘, ‘g‘, ‘ ‘, ‘m‘, ‘y‘} 96 >>> 97 >>> #集合是可叠代對象哦 98 #可叠代對象的概念後面章節會介紹 99 >>> for c in s_set: 100 print(c) 101 102 n 103 a 104 w 105 e 106 i 107 s 108 g 109 110 m 111 y 112 >>> 113 114 #集合的另外一個殺手級的功能就是去重了 115 >>> l = [1,1,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,6,9,9,9,0] 116 >>> l 117 [1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 9, 9, 9, 0] 118 >>> s = set(l) 119 >>> s 120 {0, 1, 2, 3, 4, 5, 6, 9} 121 >>> ll = list(s) 122 >>> ll 123 [0, 1, 2, 3, 4, 5, 6, 9] #太好使了,此處應該有雙擊666 124 >>> 125 126 127 >>> l = [1,2,3,4,5,6] 128 >>> s_set = { i for i in l} 129 >>> type(s_set) 130 <class ‘set‘> 131 132 #再創建一個集合,用於下邊集合交、並、補的運算,這三個函數會返回新的集合,註意這一點哦 133 >>> your_set={4,5,6,7,8,9,10} 134 135 #獲得兩個集合的並集 136 >>> my_set.union(your_set) 137 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 138 139 #獲得兩個集合的交集 140 >>> my_set.intersection(your_set) 141 {4, 5, 6, 7} 142 143 #返回集合my_set中有但your_set中沒有的元素,補集的概念 144 >>> my_set.difference(your_set) 145 {1, 2, 3} 146 147 --------------------------------------用符號進行集合的交並補運算看上去更直觀簡介 148 >>> my_set & your_set # 交集 149 150 >>> my_set | your_set # 並集 151 152 >>> my_set - your_set # 差集 153 154 -------------------------------------- 155 156 #下面這三個函數不會返回新的集合 157 #將集合y_set中的元素合並到s_set中 158 >>> y_set = {9,10} 159 >>> s_set.update(y_set) #等效於s_set |= y_set 160 >>> s_set 161 {1, 2, 3, 4, 5, 6, 9, 10} 162 163 164 #將my_set中不在your_set集合中的元素刪除 165 >>> my_set.intersection_update(your_set) #等效於my_set &= your_set 166 >>> my_set 167 {4, 5, 6, 7} 168 169 170 #將my_set中在your_set集合中的元素刪除 171 >>> my_set.difference_update(your_set) #等效於my_set -= your_set 172 >>> my_set 173 set() 174 >>> my_set.add(1) 175 >>> my_set.add(7) 176 >>> my_set 177 {1, 7} 178 >>> your_set 179 {4, 5, 6, 7, 8, 9, 10} 180 >>> my_set.difference_update(your_set) 181 >>> my_set 182 {1} 183 184 185 #將s1相對於s2的補集和s2相對於s1的補集放在s1中 186 >>> s1 = {1,2,3,4,5} 187 >>> s2 = {3,4,5,6,7,8} 188 >>> 189 >>> s1.symmetric_difference_update(s2) #等效於 s1 ^= s2 190 >>> s1 191 {1, 2, 6, 7, 8}
集合這部分的操作還是希望大家自己動手敲一遍代碼的,光看文字不好理解,看漢字的定義很容易迷糊。 老梁:好記性不如碎嘴子,不如爛筆頭。
1.5 其它核心數據類型