python集合数据类型详解

    技术2024-03-20  91

    集合

    前言:首先我问大家几个问题,什么是集合?集合的作用是什么?集合是可变的数据类型吗?下面我们就按照这些问题进行展开。

    什么是集合?

    由不同元素组成的集合,集合是一组无序排列 可hash值,可作为字典的key。集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算。

    集合的作用

    我认为集合有两个作用,一个是集合本身的性质 ‘’去重‘’,另一个集合可以用来做关系测试,比如交集,并集,差集,反交集(个人叫法)

    集合是可变数据类型吗? set1 = {1, 2, 3} print(id(set1)) set1.add(4) print(id(set1)) # 输出: 166444888576 166444888576

    a) 由此可见集合是可变数据类型,但是在这里我要强调一下,上面我说了集合是一组无序排列 可hash值,所以说,集合里面的元素必须都是不可变的数据类型,而且集合也是无序的,所以说没有索引的概念

    b) 将列表作为集合的元素

    set1 = {[1, 2], 3, 4} print(set1) # 报错: TypeError: unhashable type: 'list'

    集合的方法

    集合的创建

    a) 直接用花括号括起来

    set1 = {1, 2, 3, 3, 2} print(set1) # 输出: {1, 2, 3}

    可见集合会自动去除重复的元素

    b) 内置方法进行创建

    set1 = set((1, 2, 3, 3, 2)) print(set1) # 输出 {1, 2, 3}

    c) 创建空集合

    set1 = {} # 这样创建是默认创建的空字典而不是空集合 set2 = set() print(type(set1)) print(type(set2)) # 输出: <class 'dict'> <class 'set'>

    a) add() 单独增加

    set1 = {1, 2, 3} set1.add(4) print(set1) # 输出: {1, 2, 3, 4}

    b) update() 迭代增加,与列表的extend类似

    set1 = {1, 2, 3} set1.update([4, 5, 6]) print(set1) # 输入: {1, 2, 3, 4, 5, 6}

    a) remove() 删除指定元素

    set1 = {1, 2, '小红'} set1.remove('小红') print(set1) # 输出: {1, 2}

    b) pop() 随机删除一个元素

    set1 = {'李明', '小兰', '小红'} set1.pop() print(set1) # 输出: 多种结果

    改,查 因为集合是无序的,所以不提供改和查的功能,但还是有隔山打牛的方式进行更改

    a) 改 我们先删除要改的元素,然后进行添加元素

    set1 = {'李明', '小兰', '小红'} set1.remove('小红') set1.add('李华') print(set1) # 输出: {'小兰', '李华', '李明'}

    b) 查 通过 in 或者 not in 判断元素是否在集合内

    set1 = {'李明', '小兰', '小红'} print('李明' in set1) print('憨憨' in set1) # 输出: True False

    重点

    前面说了集合的几个作用:

    去重做关系测试

    去重,当我们要对列表进行去重时,我们可以将列表转为集合再转为列表,即可完成去重工作

    set1 = [1, 2, '你好', 2, 7, '你好'] set1 = set(set1) print(set1) print(list(set1)) # 输出: {1, 2, '你好', 7} [1, 2, '你好', 7]

    关系测试

    a) 交集 & 两个集合共有的元素

    set1 = {1, 2, 3, 4} set2 = {3, 4, 5, 6} # 两种去交集的方式 print(set1 & set2) print(set1.intersection(set2)) # 输出: {3, 4} {3, 4}

    b) 并集 |

    set1 = {1, 2, 3, 4} set2 = {3, 4, 5, 6} print(set1 | set2) # 输出: {1, 2, 3, 4, 5, 6}

    c) 差集

    set1 - set2:set1 减去与set2的共有元素,再得到set1的结果

    set1 = {1, 2, 3, 4} set2 = {3, 4, 5, 6} print(set1 - set2) # 输出: {1, 2}

    set2 - set1:set2 减去与set1 的共有元素,再得到set2的结果

    set1 = {1, 2, 3, 4} set2 = {3, 4, 5, 6} print(set2 - set1) # 输出: {5, 6}

    d) 反交集(个人叫法) ^ 可以理解为并集减去交集得到的结果

    set1 = {1, 2, 3, 4} set2 = {3, 4, 5, 6} print(set2 ^ set1) print((set1 | set2) - (set1 & set2)) # 输出: {1, 2, 5, 6} {1, 2, 5, 6}

    判断子集与超集

    a) 判断子集超集

    set1 = {1, 2, 3, 4, 5} set2 = {3, 4} print(set1 > set2) # 通过大于小于号判断 print(set2.issubset(set1)) # set2是set1的子集,subset:子集 print(set1.issuperset(set2)) # set1是set2的超集,superset:超集 # 输出: True True True

    结语:python中集合的基本介绍就到这里了,希望读者都能够有属于自己的收获,觉得还不错的可以点个赞,你们的鼓励是我最大的动力

    Processed: 0.010, SQL: 9