一、散列类型散列类型用来表示无序集合。 1. 集合 python 中集合(set)类型与数学中的集合类型一致,用来表示无序不重复元素的集合。 1.1 集合定义 集合使用一对大括号 a = {1, 2, 3, 4, 5, 6} b = {1,2,'a',('a',),1.5} # 集合中元素必须是不可变类型 print('a的类型为:', type(a)) # a的类型为: <class 'set'> print('b的类型为:', type(b)) # b的类型为: <class 'set'> a 的类型为: <class 'set'> {[1,2,3],(1,2,3)} TypeError Traceback (most recent call last) in TypeError: unhashable type: 'list' a = set() # 空集合# 注a = {} 是空字典print(a) set() 1.2 集合的常用操作 1.2.1 添加元素集合添加元素常用函数有两个:
s = {1,2} s.add(1) print(s) {1, 2} s.add(3) print(s) {1, 2, 3} s = {1,2} s.update({2,3}) print(s) {1, 2, 3} s.update([3,4]) print(s) {1, 2, 3, 4} 1.2.2 删除元素
s = {'a','b','c'} s.pop() 'a' s = {'a','b','c'} s.remove('a') print(s) {'b', 'c'} s.remove('d') KeyError Traceback (most recent call last) in KeyError: 'd' s = {'a','b','c'} s.discard('d') print(s) {'a', 'b', 'c'} s = {1,2,3} s.clear() print(s) set() 1.2.3 集合运算
交集取既属于集合 A 和又属于集合 B 的项组成的集合叫做 AB 的交集 s1 = {1,2,3} s2 = {2,3,4} s = s1 & s2 print(s) {2, 3} 并集集合 A 和集合 B 的所有元素组成的集合称为集合 A 与集合 B 的并集 s1 = {1,2,3} s2 = {2,3,4} s = s1|s2 print(s) {1, 2, 3, 4} 补集取在集合 A 中不在集合 B 中的项组成的集合称为 A 相对 B 的补集 s1 = {1,2,3} s2 = {2,3,4} s = s1-s2 print(s) {1} 对称差集取不在集合 AB 交集里的元素组成的集合称为对称差集,也叫反交集 s1 = {1,2,3} s2 = {2,3,4} s = s1^s2 print(s) {1, 4} 1.3 集合去重 集合具有天生去重的性质,因此可以利用它来去除序列中的重复元素 ls = [1,1,2,3,4,4,3,2,5] ls = list(set(ls)) print(ls) [1, 2, 3, 4, 5] set('aabbcc') {'a', 'b', 'c'} 2. 字典 因为集合无序,因此不能很便捷的获取特定元素。利用集合元素不重复的特性,使集合中的元素映射值组成键值对,再通过键来获取对应的值。 2.1 字典的定义 python 中的字典(dict)数据类型就是键值对的集合,使用一对大括号进行定义,键值对之间使用逗号隔开,键和值使用冒号分割。 字典中的键必须是不可变数据类型,且不会重复,值可以使任意数据类型。 a = {} # 空字典 b = { 1: 2, # key:数字;value:数字 2: 'hello', # key:数字;value:字符串 ('k1',): 'v1', # key:元祖;value:字符串 'k2': [1, 2, 3], # key:字符串;value:列表 'k3': ('a', 'b', 'c'), # key:字符串;value:元祖 'k4': { # key:字符串;value:字典 'name': 'feifei', 'age': '18' } } print('a的类型为:', type(a)) # a的类型为: <class 'dict'> print('b的类型为:', type(b)) # b的类型为: <class 'dict'> a 的类型为: <class 'dict'> 2.2 字典的索引 字典通过键值对中的键作为索引来获取对应的值。字典中的键是无序的。 d = {1:2, 'key': 'value'} print(d[1]) 2 print(d['key']) value 2.3 字典的常用操作 2.3.1 增加元素字典可以直接利用 key 索引赋值的方式进行添加元素,如果 key 存在则修改字典 d = {'name': 'xinlan'} d['age'] = 18 print(d) {'name': 'xinlan', 'age': 18} d = {'name': 'xinlan'} n_d = {'age':18, 'sex':'男'} d.update(n_d) print(d) {'name': 'xinlan', 'age': 18, 'sex': '男'} d.update({'sex': '女','height': 170}) # 当有重复key的时候会覆盖原值 print(d) {'name': 'xinlan', 'age': 18, 'sex': '女', 'height': 170} 2.3.2 修改元素直接通过 key 索引赋值的方式可以对字典进行修改,如果 key 不存在则添加 d = {'name': 'xinlan'}d['name'] = 'XinLan'print(d) {'name': 'XinLan'} 2.3.3 删除元素
d = {'name': 'xinlan'} d['name'] = 'XinLan' print(d) 18 print(d) {'name': 'xinlan'}
d = {'name': 'Felix','age': 18} d.popitem() ('age', 18) 2.3.4 查询元素通过 key 索引可以直接获取 key 对应的值,如果 key 不存在则抛出异常。 d = {1:2, 'key': 'value'} print(d[1]) 2 d['name'] KeyError Traceback (most recent call last) in KeyError: 'name' d = {1:2, 'key': 'value'} d.get(1) 2 d.get('name',0) 0 二、其他类型1. 布尔型 条件表达式的运算结果返回布尔型(bool),布尔型数据只有两个, True True False # 注意首字母大写 False 1.1 比较运算符
比较运算符运算后的结果是布尔型 a = 1b = 2 a == b False a = 300 b = 300 a is b False a == b True 1.2 成员运算符
ls = [1,2,3,4,5] 1 in ls True s = ['abcdefg'] 'a' in s False t = (1,2,3) 4 in t False d = {'name': 'Felix','age':18} 'name' in d True st = {1,2,3} 1 in st True 1.3 布尔型运算 布尔型数据可以和数值类型数据进行数学计算,这时 True + 1 2 False + 1 1 1.4 布尔类型转换 任意数据都可以通过函数 在 python 中,None, 0(整数),0.0(浮点数),0.0+0.0j(复数),''(空字符串),空列表,空元组,空字典,空集合的布尔值都为 print(bool(0)) print(bool(0.0)) print(bool(0.0+0.0j)) print(bool('')) print(bool([])) print(bool(())) print(bool({})) print(bool(set())) print(bool(None)) False 1.2 逻辑运算符
逻辑运算符两边的表达式不是布尔型时,在运算前会转换为布尔型。 True and True True True and False False 0 and 1 # 短路 0 1 and 2 2 True or False True False or False False 1 or 0 # 短路 1 0 or '' # 短路 '' 2. None
print(None) # 注意首字母大写 None 本文作者:柠檬班软件测试(lemonban)——专注于最新最前沿的软件测试技术 |
|