8 集合[python基础]

2019-12-21  本文已影响0人  乱弹琴给

# 什么是集合?

集合(Set)是Python中的内置数据结构

集合可以看作是没有Value的字典

            {'张三','李四','王五','赵六','宋七','杨八'}

# 集合的特点

集合元素是无序的

集合元素不能重复

集合是可变的

集合允许数学运算 交集、并集、差集等

集合是分散存储的

# 集合的存储原理

集合hash()

张三478718923

李四890931281

王五372917891

赵六489034277

通过hash()把集合转换

内存地址数据

372917891王五

890931281李四

478718923张三

489034277赵六

给这个集合开辟一块内存,分散无序存储。

效率高,但会浪费空间

# 集合的创建

使用{}符号创建集合

            college1 = {'哲学','经济学','法学','教育学'}  //每一次运行 顺序都不同,因为生成的散列值不同。

使用set()函数创建集合

            college2 = set(["金融学","哲学","经济学","历史学","文学"])

使用set创建字符串集合

            college3 = set("中华人民共和国")   //会得到每一个字符的集合{"中","华".....}

# 空集合的创建

            college4 = set()   //不能用{},会生成字典

# 集合关系与数学运算

交集(intersection)

            c3 = college1.intersection(college2)   //交集,获取两个集合中重复的部分,并新建一个集合。

            college1.intersection_update(college2)  //交集,获取两个集合中重复的部分,并更新原集合。

并集(union)  

            c4 = college1.union(college2)  //并集,将两个集合所有元素合并,去重。

            union操作没有update

差集(difference)

            c5 = college1.difference(college2)  //差集,是指两个集合之间差异的部分。是以college1为基数的,单项的差集。

            c6 = college1.symmetric_difference(college2)  //双向差集

            difference 有update操作 difference_update\symmetric_difference_update

# 集合间的关系操作

            s1 = {1,2,3,4,5,6}

            s2 = {6,5,4,3,2,1}

            print(s1 == s2)   //结果为True

            s3 = {4,5,6,7}

            s4 = {1,2,3,4,5,6,7,8}

             print(s3.issubset(s4))  //结果为True   判断是否为子集   

             print(s4.issuperset(s3))  // 判断是否为父集

              s5 = {5}

                s6 = {1,3,5,7,9}

                s5.isdisjoint(s6)   //判断两个集合是否存在重复元素,返回True代表不存在,False代表存在。也可以用交集的办法判断。

# 操作集合元素(增删改查)

​集合的遍历

            college1 = {'哲学','经济学','法学','教育学'}

            for c in college1:

                print(c)

​判断元素是否存在

            print("哲学" in college1)   //返回True

​集合不支持按索引提取数据

新增数据

            college1.add("计算机学")   //添加已存在的会被忽略,一次只能添加一个

            college1.update(["生物学","工程学"])   //一次添加多个,可以是列表或元组

​集合不支持更新,只能删除后再增加

集合元素的删除

            college1.remove("生物学")   //删除不存在元素时会报错

            college1.discard("生物学")   //同样可以删除元素,遇到不存在元素时,则忽略删除操作。

# 三种内置生成式

##  生成式语法

        [被追加的数据 循环语句 循环或者判断语句] |{}  

​列表生成式

            lst1 = [  ]

            for i in range(10,20):

                lst.append(i*10)

           //可以用如下生成式生成列表

            lst2 = [i*10 for i in range(10,20)]

          //复杂一点的生成式

            lst3 = [i*10 for i in range(10,20) if i % 2 == 0]

            //相当于如下

            for i in range(10,20):

                if i % 2 == 0:

                    lst3.append( i * 10)

字典生成式

            lst5 = ['张三','李四','王五']

            dict1 = {i+1:lst5[i] for i in range(0,len(lst5))}

            print(dict1)

            //相当于

            for i in range(0,len(lst5)):

                dict[i+1] = lst5[i]

集合生成式

            set1 = {i*j for i in range(1,4) for j in range(1,4) if i == j}

            print(set1)

上一篇 下一篇

猜你喜欢

热点阅读