集合

Day11 集合

什么是集合?集合的定义、增删改查、集合操作、集合的效率

08-05侠课岛    基础入门       

后端/后端/Python 由浅入深入门 16     0     329

总结

1.什么是集合

  • 集合是可变的,无序列的,不可重复的元素的集合;

  • 集合的元素必须是可以hash类型,也就是必须是hashable;

  • 不可以hash类型:list, bytearray, set等;

  • 可以hash类型:数值类型,布尔类型,字符串类型,bytes,元组,None等;

2.集合的定义

  • 定义一个集合的语法是:s = set(),而直接s = {}是定义一个空字典的语法;

  • 集合的初始化可以直接在中括号{}中赋值,类似与:s = {1,2,3};

3.集合的插入

  • 集合的插入方法是add()方法;

  • 集合中的元素是不可重复的,有去重功能;

4.集合的修改

  • 集合的的修改方法是update()方法,可以修改集合中的元素;

5.集合的查询

  • 集合是无序的,不能使用index索引查询,所以只能用迭代来查询;

6.集合的删除

  • remove:remove(value)方法直接移除元素的某个值;

  • discard: discard方法与remove方法类似,如不同之处在于如果元素不存在,remove方法会报错,而discard不会;

  • pop:一般来说集合中pop()方法是随机删除元素的,如果集合为空则报异常;

  • clear:清除集合中所有元素;

7.集合的对象操作

  • 并集:两个集合求并集可以使用union()方法,或者使用 | 符号连接两个集合(多个元素则可以使用update()方法);

  • 交集:两个集合求交集可以使用intersection()方法(多个集合可以使用intersection_update()方法);

  • 差集:两个集合求差集可以使用difference方法,例如s1.difference(s2)表示s1有但s2没有的元素,反之亦然(多个集合用difference_update()方法)

8.集合查询效率问题

  • 集合示非线性结构,查找时并不会随着元素集的增大而时间变长;

课后问题:

例1:

s = {[1,2,3],(1,2,3),100}

print(s) #输出:报错

例2:

s = {(1,2),100}

s.update([1,2,3],[4,5])

print(s) #输出: {(1, 2), 1, 2, 3, 100, 4, 5}

为什么例1和例2都是用了不可hash元素’列表’,例1会报错,而例2不会呢?

  1. 使用{}定义的集合,是集合的最终形式,python不会做任何处理,而集合不可以由非hash的元素组成(如上面的列表);

  2. 使用update()方法更新,其相当于python会使用set()来设置集合的并集,也就是set()方法是可以传入列表的,python程序会把这个列表自动转换为集合,所以,你会发现通过set([1,2,3]),输出的时候就会变成了{1,2,3}这样的,就是把列表合并成了一个集合;

  3. 另外一个情况是:使用update()set()方法,都是需要传入一个可迭代的对象,比如列表,如果传入一个单纯的数字,数字不可迭代,那么就会报错的哦,如update(1),set(1)都会报错哦;

  4. 总结一句话理解就是{}形式就是集合最终样子,而使用set()update()这样的方法,python会转换合适的可迭代的数据生成一个集合,最终也会变为{}形式。这相当于有一个中间处理状态,而{}直接就是结果了,过程只要符合过程规范,而结果必须要符合结果的规范。

这节课主要讲解了Python中的集合数据类型,集合的定义,集合的增删改查方法等,内容比较多,同学们一定要多动手哟~

课后补充:

为什么下面输出结果第一个元素是1而不是2呢?

答:集合会自动按大小顺序排列,所以1在前面,并且集合会自动去重,所以输出的集合中只有一个2;

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

16

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录



|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?