码迷,mamicode.com
首页 > 其他好文 > 详细

1.5 其它核心数据类型

时间:2018-01-01 18:21:00      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:操作   布尔   sys   1.5   remove   none   定义   数学   数学运算   

(一)空类型: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 其它核心数据类型

标签:操作   布尔   sys   1.5   remove   none   定义   数学   数学运算   

原文地址:https://www.cnblogs.com/avention/p/8166358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!