集合
集合(set)是一个无序的不重复元素序列。1,2,3,4,1,2,3 = 1,2,3,4
创建
使用大括号 { } 或者 set() 函数创建集合;
注意:创建一个空集合必须用 set() 而不是 { },{ } 是用来创建一个空字典。
s1 = {}
s2 = {1,2,3}
s3 = {1,2,3,'hello',(1,2,3),[1,2,3]} #不能成功定义,集合中不能包含可变的数据类型(list)
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
s4 = set('abracadabra')
集合内置方法
增
add | 为集合添加元素 |
update | 把一个可迭代对象拆分成个体添加元素 |
删
clear | 移除集合中所有元素 |
discard | 删除集合中指定元素(不存在时不会抛出异常) |
pop | 随机移除元素 |
remove | 移除指定元素(不存在时抛出异常) |
查
difference | 返回一个移除当前集合中与指定集合相同元素的新集合(差集) |
difference_update | 在当前集合中移除与指定集合相同元素,没有返回值 |
intersection | 返回一个移除当前集合中与指定集合不同元素的新集合(交集) |
intersection_update | 在当前集合中移除与指定集合不同元素,没有返回值 |
symmetric_difference | 返回一个移除两个集合中不同元素的新集合(对称差分) |
symmetric_difference_update | 在当前集合中移除与指定集合相同的元素,并将指定集合中当前集合没有的元素插入当前集合,没有返回值 |
union | 返回两个集合中所有元素的新集合(并集) |
isdisjoint | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False |
issubset | 判断当前集合是否为指定集合的子集 |
issuperset | 判断当前集合是否为指定集合的父集 |
注:
a - b ---->a对b求差集
a & b ---->a和b求交集
a | b ---->a和b求并集
a ^ b ---->a和b求对称差分(并集减交集)
集合应用案例
通过集合去重
字典
字典是另一种可变容器模型,且可存储任意类型对象。
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一
创建
1). 简单字典创建
2). fromkeys,字典中的key有相同的value值,默认为None
3). zip间接创建
内置方法
增(改)
dict[‘key’] = value | key不存在则增加,存在则更新(更新一个元素) |
update | key不存在则增加,存在则更新(可以指定一个字典,更新多个元素) |
setdefault | key不存在则增加,默认value为None,存在则不做修改 |
删
clear | 清空字典中所有元素 |
del dict[‘key’] | 根据key值删除,无返回值 |
pop() | 根据key值删除,并返回删除的value值 |
查
dict[key] | 根据key查看 |
key | 查看所有的key值 |
value | 查看所有的value值 |
items | 查看所有的键值对 |
get | 指定key存在,返回value值,不存在返回给定的默认值 |
defaultdict
1). 字典是一种关联容器,每个键都映射到一个单独的值上。如果想让键映射到多个值,需要将这些多个值保存到容器(列表或者集合)中。
2). 利用collections模块中的defaultdict类自动初始化第一个值,这样只需关注添加元素.
内置数据结构总结
可变数据类型
可以增删改。可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
不可变数据类型
不可以增删改。python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象。
序列
Python包含列表、元组、字符串、集合, 字典等内建的序列。所有序列类型都可以进行某些特定的操作。可以for循环
有序序列
这些操作包括:索引(indexing)、切片(sliceing)、连接操作符(adding)、重复操作符(multiplying)以及成员操作符。
非序列
int, long, float, bool, complex