首页 > python基础教程> 详细内容
(31)python少儿编程之集set
日期:2020-02-26 
  • 约定
  • set 翻译就叫集合
  • collection 翻译为集合类型 是一个更大的概念
  • set
  • 可变的、无序的、不重复的元素集合
  • 定义、初始化
(31)python少儿编程之集set
  • 主要两种方式,一种直接大括号括起来 ,另外一个放入可迭代的对象

set的元素

  • set的元素必须可hash
  • 目前学过不可hash的类型有list,set
  • 我们先来测试一下可hash类型
(31)python少儿编程之集set
  • 我们发现字符串和bytes 都是可以哈希的 而list是不能哈希的 所以set里面是不能放list的元素的
  • 其实这里有一个误区 set可以放迭代对象 但是不能放list元素 怎么理解呢 看例子
(31)python少儿编程之集set
  • 用set的方法可以是迭代对象,而我们取的只是对象中的元素
  • 而用大括号的时候 list本身变成了一个元素 这是不允许的
  • 元素不可索引
  • 因为集合不是线性的,所以自然没有下标,这跟数学的里面的集合是一个概念 大家画个圈 把元素丢进去 就变成了集合 所以自然没有排序的概念
  • set 也是可以迭代的
  • 能不能迭代 只要用for ... in 测试一下就知道了
(31)python少儿编程之集set



set 增加

  • add(elem)
  • 增加一个元素到set中
  • 如果元素存在,什么都不做
(31)python少儿编程之集set
  • 如图 增加了一个重复的1 set的元素并没有增加
  • update(*others)
  • 合并其他元素到set集合中来
  • 参数others必须是迭代对象
  • 就地修改
(31)python少儿编程之集set
  • 可以增加列表 也可以增加set 元素重复的时候 还是会自动剔除

set 删除

  • remove(elem)
  • 从set中移除一个元素
  • 如果元素不存在 抛出keyError异常
(31)python少儿编程之集set
  • 移除1没有问题 ,set里面没有4,移除4就报错了
  • discard(elem)
  • 也是移除一个元素 和remove的区别就是 如果元素不存在 就不操作
  • 所以建议就用这个方法来移除 因为处理异常的操作会麻烦一点
(31)python少儿编程之集set
  • 移除4 没有报错
  • pop()
  • 移除并返回任意的元素
  • 空集合会返回keyError异常
(31)python少儿编程之集set
  • 随机移除一个数 返回这个数 然后打印set发现少了这个元素
  • clear()
  • 清除所有元素
(31)python少儿编程之集set
  • 变成了空集

set修改、查询

  1. 因为set无法通过下标来找到元素 也就不存在修改的概念 修改就是删除元素然后新增一个就可以了
  2. 因为是非线性的 所以无法索引 没有下标 所以没有查询的概念 这是我们学的第一个非线性的类型 之前学的都是线性的
  3. set是可迭代的 前面我已经写过例子了
  4. 可以用in 或者 not in 来判断
(31)python少儿编程之集set