集合类型内置方法

集合类型内置方法

一、作用

​ 就是存储一堆元素的东西, 容器类型数据

二、定义方式

以{}用逗号隔开不可变数据类型(重复的元素会去掉),注意当s = {}定义时,他是是字典,不是集合,定义空集合必须得用set(),打印顺序随机

s = {1, 2, 1, 'a', 'a', 'c'}
# s = {[1,2], 23, 3, 4, 5, 6, 4, 32, 4, '12', 'e', 'sdf'} # 报错

print(s)

结果:

{1, 2, 'a', 'c'}

三、内置方法

  1. 长度len()

    pythoners = {'小明', '小红', '小花', '小李'}
    print(len(pythoners))
    

    结果:

    4

  2. in/ not in

    pythoners = {'小明', '小红', '小花', '小李'}
    print('小红' in pythoners)
    

    结果:

    True

  3. |并集、union 全部

    pythoners = {'小明', '小红', '小花', '小李'}
    linuxers = {'小明', '小田', '小米', '小芳'}
    
    print(pythoners | linuxers)
    print(pythoners.union(linuxers))
    

    结果:

  4. &交集、intersection 公共的

    pythoners = {'小明', '小红', '小花', '小李'}
    linuxers = {'小明', '小田', '小米', '小芳'}
    
    print(pythoners & linuxers)
    print(pythoners.intersection(linuxers))
    

    结果:

  5. -差集、difference 去除与自己相同的

    pythoners = {'小明', '小红', '小花', '小李'}
    linuxers = {'小明', '小田', '小米', '小芳'}
    
    print(pythoners - linuxers)
    print(pythoners.difference(linuxers))
    

    结果:

  6. ^对称差集、symmetric_difference,去除公共的

    pythoners = {'小明', '小红', '小花', '小李'}
    linuxers = {'小明', '小田', '小米', '小芳'}
    
    print(pythoners ^ linuxers)
    print(pythoners.symmetric_difference(linuxers))
    

{'小芳', '小红', '小田', '小花', '小米', '小李'}

三、了解方法

  1. 删除(随机删除最后一项)pop()

     pythoners = {'小明', '小红', '小花', '小李'}
    linuxers = {'小明', '小田', '小米', '小芳'}
    pythoners.pop()
    print(pythoners)
    

    结果:

  2. 添加集合(两个集合合并在一起)

    pythoners = {'小明', '小红', '小花', '小李'}
    linuxers = {'小明', '小田', '小米', '小芳'}
    
    pythoners.update(linuxers)
    print(pythoners)
    

    结果:

  3. 清空clear()

    pythoners = {'小明', '小红', '小花', '小李'}
    linuxers = {'小明', '小田', '小米', '小芳'}
    pythoners.clear()
    print(pythoners)
    

    结果:

    set()

  4. 复制

    pythoners = {'小明', '小红', '小花', '小李'}
    linuxers = {'小明', '小田', '小米', '小芳'}
    print(pythoners.copy())
    

    结果:

  5. 移除remove(),不存在会报错

pythoners = {'小明', '小红', '小花', '小李'}

pythoners.remove('小明')
print(pythoners)

结果;

{'小李', '小红', '小花'}

  1. 移除discard(),移除不存在,不会报错

    pythoners = {'小明', '小红', '小花', '小李'}
    pythoners.discard('小红')
    print(pythoners)
    
    

    结果:

  2. 判断是否是子集

    pythoners = {'小明', '小红', '小花', '小李'}
    pythoners2 = {'小明', '小红', '小花', '小李', "小芳"}
    print(pythoners.issubset(pythoners2))
    
    

    结果:

    True

  3. 判断是否是他的父集

    pythoners = {'小明', '小红', '小花', '小李'}
    pythoners2 = {'小明', '小红', '小花', '小李', "小芳"}
    print(pythoners.issuperset(pythoners2))
    print(pythoners2.issuperset(pythoners))
    

    结果:

    False
    True

    
    pythoners = {'小明', '小红', '小花', '小李'}
    linuxers = {'小明', '小田', '小米', '小芳'}
    
    # 删除这个集合和另一个集合相同的数据
    pythoners.difference_update(linuxers)
    print(pythoners)
    
    # #
    # pythoners.symmetric_difference_update(linuxers)
    # print(pythoners)
    
    # 判断两个集合是否有交集,没有返回true,无返回false
    # res = pythoners.isdisjoint(linuxers)
    # print(res)
    
    # 有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序
    stu_info_list = [
        {'name': 'nick', 'age': 19, 'sex': 'male'},
        {'name': 'egon', 'age': 18, 'sex': 'male'},
        {'name': 'tank', 'age': 20, 'sex': 'female'},
        {'name': 'tank', 'age': 20, 'sex': 'female'},
        {'name': 'egon', 'age': 18, 'sex': 'male'},
    ]
    
    new_stu_info_list = []
    for stu_info in stu_info_list:
        if stu_info not in new_stu_info_list:
            new_stu_info_list.append(stu_info)
    
    for new_stu_info in new_stu_info_list:
        print(new_stu_info)
    
  4. 存一个值or多个值:多个值,且值为不可变类型。

  5. 有序or无序:无序

  6. 可变or不可变:可变数据类型

四、总结

4.1 常用操作

  1. 长度len
  2. 成员运算in和not in
  3. |并集、union
  4. &交集、intersection
  5. -差集、difference
  6. ^对称差集、symmetric_difference
  7. ==
  8. 父集:>、>= 、issuperset
  9. 子集:<、<= 、issubset

4.2 常用方法

  1. add
  2. remove
  3. difference_update
  4. discard
  5. isdisjoint
posted @ 2019-08-05 21:59  RandySun  阅读(102)  评论(0编辑  收藏  举报