python笔记 集合的删除及其他补充

131 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情

0 环境

  • 编辑器:idea或vscode
  • 系统版本:windows10
  • python版本:3.9.6

1 回顾

当我们知道set的目的,是去重时,顺着去重的思路去看add,update,其实本质都算是add。删除集合元素时,当元素在集合中不存在时,会报错。

2 pop

pop用于弹出一个元素。虽然都是删除,区别:pop每次弹出一个元素,会有返回值,还有就是只有集合为空时,pop会报异常。如下代码:删除两个元素,相对于remove来说,不灵活,无法指定删除哪个元素,当我们clear清空集合后,在pop就会报异常。

def set_pop_demo():
    set_item = set(range(4))
    set_item.pop()
    print("set_item ==>", set_item)
    set_item.pop()
    print("set_item ==>", set_item)
    set_item.clear()
    set_item.pop()
    print("set_item ==>", set_item)

image.png

3 discard

和remove有点类似,指定要删除的元素,如有,则删之,无则啥也不做,这也是删除元素3时,集合还是1的原因,并且只修改自身的集合,无返回值。

def set_del_demo():
    set_item = set(range(2))
    set_item.discard(0)
    print("set_item ==>", set_item)
    set_item.discard(3)
    print("set_item ==>", set_item)

image.png

4 修改

集合不能修改单个元素

5 查询

虽然集合写法类似list(range(数字)),但集合不是线性结构,且无序,所以不能使用索引访问。

6 成员运算符

成员运算符常用的两种:in和not in,判断元素在与不在容器中,成员运算符返回结果是布尔值,常用于判断。那之前学到的什么类型可以用in呢,我们学到的int,str,list,tuple,集合都可以。而且做成员运算in、not in,相对于其他类型,和集合配合就会很快。集合的效率:O(1),而列表效率O(n)。可以把其他类型转化为集合。

小结 集合的删除方法有四种,remove指定删除元素,集合里没有该元素,会报异常。pop弹出元素,当集合为空时,报异常。discard和remove类似,就是删除元素不在集合中时,啥事不做,还有一个clear方法,全部清空。除了pop有返回值,其他的没有。当用到in和not in时,对比较时间要求高的,可以先转成集合,在食用。