1. 程式人生 > >1.5 其它核心數據類型

1.5 其它核心數據類型

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)0,0.0,None ,空的對象(列表,字符串,元組,映射等) 是False   (2)其余的都是True 真值測試一般用於條件判斷if,,,while等 (四)set ( 集 合 )   集 合 是 一 個 無 序 不 重 復 元素 的 集 。 基 本 功 能 包 括 關 系 測 試 和 消 除 重 復 元 素 。   集 合 對 象 還 支 持 union( 合並),intersection(交集),difference(差集)和 sysmmetric difference(對稱差集)等數學運算。   大括號或 set() 函數可以用來創建集合。註意:想要創建空集合,你必須使用set() 而不是 {} 。{}用於創建空字典。   集合是無序的,也無法通過數字進行索引。 下面演示set的操作吧
  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 其它核心數據類型