数据类型之集合

一、集合介绍:

  集合用于包含一组无序的对象。与列表和元组不同,集合是无序的,也无法通过数字进行索引。此外,集合中的元素不能重复。

  简单总结:

    不重复,(互异性),也就是说集合是天生去重的
    元素为不可变对象,(确定性,元素必须可hash)
    集合的元素没有先后之分,(无序性)

二、集合的简单操作

1.通过函数进行转换:
    nums = [1,2,3,4,5,6,7]
    num_set = set(nums)
2.直接定义集合:
    set_list = set()

3.增:
1.传入的内容当做一个整体放入集合中:
    set_list.add('add')
2.传入的元素拆分,做为个体传入到集合中
    set_list.update('updata')
4.删 :
remove:如果有,直接删除;如果没有,程序报错
    set_list.remove('add')
5.该:不可变类型无法修改元素
6.查:无法通过下标索引
7.交集:
1.(&2.函数:intersection
    示例:
        list1 = set('jiangfeng')
        list2 = set('shanfeng')
        list3 = list1 & list2
        print(list3)
        list4 = list1.intersection(list2)
        print(list4)
    结果:
        {'a', 'n', 'f', 'e', 'g'}
        {'a', 'n', 'f', 'e', 'g'}
8.并集:
1.(|2.函数:union
    例:
        list1 = set('jiangfeng')
        list2 = set('shanfeng')
        list3 = list1 | list2
        print(list3)
        list4 = list1.union(list2)
        print(list4)
    结果:
        {'n', 'a', 'i', 'h', 'g', 'f', 's', 'e', 'j'}
        {'n', 'a', 'i', 'h', 'g', 'f', 's', 'e', 'j'}
9.差集:
1:(-2.函数:difference
    例;
        list1 = set('jiangfeng')
        list2 = set('shanfeng')
        list3 = list1 - list2
        print(list3)
        list4 = list2.difference(list1)
        print(list4)
    结果:
        {'j', 'i'}
        {'s', 'h'}
10.对称差集:
1:(^2:函数:
    例;
        list1 = set('jiangfeng')
        list2 = set('shanfeng')
        list3 = list1 ^ list2
        print(list3)
        list4 = list1.symmetric_difference(list2)
        print(list4)
    结果:
        {'s', 'j', 'h', 'i'}
        {'s', 'j', 'h', 'i'}
11.集合转换:
例:
    list1 = set('jiangfeng')
    list = list(list1)
    tuple = tuple(list1)
    str = str(list1)
    print(list,type(list))
    print(tuple,type(tuple))
    print(str,type(str))
结果:
    ['e', 'a', 'n', 'g', 'j', 'i', 'f'] <class 'list'>
    ('e', 'a', 'n', 'g', 'j', 'i', 'f') <class 'tuple'>
    {'e', 'a', 'n', 'g', 'j', 'i', 'f'} <class 'str'>

三、集合的方法:

add()                            #将元素添加到集合中
clear()                            #删除集合中的所有元素
copy()                            #返回集合的浅拷贝
difference()                    #将两个或多个集合的差集作为一个新集合返回
difference_update()                #从这个集合中删除另一个集合的所有元素
discard()                        #删除集合中的一个元素(如果元素不存在,则不执行任何操作)
intersection()                    #将两个集合的交集作为一个新集合返回
intersection_update()            #用自己和另一个的交集来更新这个集合
isdisjoint()                    #如果两个集合有一个空交集,返回 True
issubset()                        #如果另一个集合包含这个集合,返回 True
issuperset()                    #如果这个集合包含另一个集合,返回 True
pop()                            #删除并返回任意的集合元素(如果集合为空,会引发 KeyError)
remove()                        #删除集合中的一个元素(如果元素不存在,会引发 KeyError)
symmetric_difference()            #将两个集合的对称差作为一个新集合返回
symmetric_difference_update()    #用自己和另一个的对称差来更新这个集合
union()                            #将集合的并集作为一个新集合返回
update()                        #用自己和另一个的并集来更新这个集合