python数据类型之初识Set(集合)

来源:互联网 发布:优惠券源码 编辑:程序博客网 时间:2024/05/16 14:23

一、其他数据类型创建的回顾

1.列表
方法一:

a=[1,2,3]

方法二:

a=list([1,2,3])

2.元组
方法一:

b=('abc',123,'李四')

方法二:

b=tuple(['abc',123,'李四'])

3.字典
方法一:

c={'name':'张三','age':22}

方法二:

c=dict((('name','张三'),('age',22)))

二、 集合的创建只有一种,由关键字set创建:

d=set(对象)

注意:
1.使用set关键字创建集合时,该对象可以是任意数据类型,但是该对象中所有元素的数据类型必须是可哈希的,集合本身不可哈希的,且是无序的
2.可哈希的数据类型包括:数字、字符串、元组等
3.集合是一个自动去重的数据类型
4.由于集合之间不像列表或者字典那样存在索引,对于集合中元素的获取和通过迭代器或者for循环实现
5.集合与集合间存在着各种关系,如:包含与被包含关系,交集,并集,差集,反向交集(除了交集以外的元素组成的集合)

1.集合的创建及其他问题

1.1在列表a中,所有元素是可哈希的,且存在重复值,从最后输出结果可看出,集合自动将列表中元素进行了去重处理,并且数据是无序的

a=[1,3,2,3,'a','b',(11,22,33),'b','c']        #以列表为例,此时列表中元素皆是可哈希的数据类型d=set(a)        #创建集合dprint(d)        #输出结果:{1, 2, 3, (11, 22, 33), 'b', 'c', 'a'}

1.2将列表a的元素中添加一个不可哈希的数据,看其输出结果,可看出,报错为list数据类型不可哈希

a=[['张三','李四'],1,3,2,3,'a','b',(11,22,33),'b','c']#此时,列表a中嵌套了一个不可哈希的列表元素d=set(a)print(d)        #报错:TypeError: unhashable type: 'list'

2.集合间的关系操作

2.1并集 union 或者 |

a=set([1,2,3,4,5])b=set([3,4,5,6,7])#方法一:print(a.union(b))       #使用union(),实现并集#方法二:print(a | b)           #使用 (集合a | 集合b) 实现并集

2.2交集 intersection 或者 &

a=set([1,2,3,4,5])b=set([3,4,5,6,7])#方法一:print(a.intersection(b))   #{3,4,5}#方法二:print(a & b)    ##{3,4,5}

2.3差集 difference 或者

a=set([1,2,3,4,5])b=set([3,4,5,6,7])print(a.difference(b))          #{1, 2}  在交集的基础上,存在于a中不存在于b中的元素print(a - b)print(b.difference(a))          #{6, 7}  在交集的基础上,存在于b中不存在于a中的元素print(b - a)

2.4反向交集(除了交集以外的元素组成的集合)symmetric_difference 或者 ^

a=set([1,2,3,4,5])b=set([3,4,5,6,7])print(a.symmetric_difference(b))       #{1, 2, 6, 7}print(a ^ b)        #{1, 2, 6, 7}

2.5包含(> 、< 、 =)

a=set([4,5])b=set([3,4,5,6,7])print(a <= b)       #True   b包含a