• python学习之【第七篇】:Python中的集合及其所具有的方法


    1.前言

    python中的集合set与列表类似,它们最大的区别是集合内不允许出现重复元素,如果在定义时包含重复元素,会自动去重。
    集合是无序的,集合中的元素必须是不可变类型。集合可以作为字典的key。

    2.集合的定义

    集合用一对花括号{}定义

    set = {'dog','cat','pig','monkey'}
    print(set)
    # 输出
    {'pig', 'cat', 'monkey', 'dog'}
    

    3.集合的常见操作

    • add(x)
      往集合的尾部添加元素x
    set = {'dog','cat','pig','monkey'}
    set.add('china')
    set.add('china')
    print(set)
    # 输出
    {'cat', 'pig', 'china', 'monkey', 'dog'}
    

    注意:集合内部不允许出现重复元素,如果有重复元素,集合会自动去重,所以当往集合的尾部添加两个相同元素时,只会保留一个。

    • clear()
      清空集合内的元素
    set = {'dog','cat','pig','monkey'}
    set.clear()
    print(set)
    # 输出
    set()
    
    • pop()
      随机删除集合内的一个元素,并返回所删除的元素
    set = {'dog','cat','pig','monkey'}
    print(set.pop())
    print(set)
    # 输出
    'pig'
    {'cat', 'monkey', 'dog'}
    
    • remove(x)
      删除集合内的元素x,如果元素x不存在会报错
    set = {'dog','cat','pig','monkey'}
    set.remove('dog')
    print(set)
    set.remove('dog')
    # 输出
    {'pig', 'cat', 'monkey'}
    报错,因为已经把元素'dog'从集合中删去了,再次删除'dog'时,由于集合中已经不存在该元素了,所以报错
    
    • discard(x)
      删除集合内的元素x,如果元素x不存在会返回None,不会报错
    set = {'dog','cat','pig','monkey'}
    set.discard('dog')
    print(set)
    print(set.discard('dog'))
    # 输出
    {'pig', 'cat', 'monkey'}
    None
    

    4.集合的关系运算

    • 求交集s1 & s2
    set1 = {'a','b','c','d'}
    set2 = {'h','e','a','l','c'}
    print(set1 & set2)
    # 输出
    {'c', 'a'}
    
    • 求并集s1 | s2
    set1 = {'a','b','c','d'}
    set2 = {'h','e','a','l','c'}
    print(set1 | set2)
    # 输出
    {'c', 'a', 'h', 'd', 'b', 'l', 'e'}
    
    • 求差集s1 - s2
    set1 = {'a','b','c','d'}
    set2 = {'h','e','a','l','c'}
    print(set1 - set2)
    # 输出
    {'b', 'd'}
    

    5.利用集合对列表去重

    利用集合内不允许出现重复元素这一天然特点,我们可以用来对列表去重

    l1 = ['h','e','l','l','o']
    #1.将列表转为集合,集合会自动去重
    s1 = set(l1)
    #2.将去重后的集合再转回列表
    l1 = list(s1)
    print(l1)
    # 输出
    ['l', 'o', 'h', 'e']
    

    想必细心的你已经看出来了,去重前后的列表中的元素顺序变了,由于集合是无序的,有序的列表转换成集合后变成了无序的,所以元素的顺序发生了变化,这并不是我们想要的,我们只想去掉列表中重复的元素而不想改变列表中元素的顺序,这也就是这种去重方法的缺点。

  • 相关阅读:
    回流和重绘
    php 异常捕获的坑
    每周散记 20180806
    转: Linux mount/unmount命令
    python http 请求 响应 post表单提交
    每周散记 20180723
    优惠劵产品分析
    c++ 软件版本比较函数
    每周散记
    转: 系统问题排查思路
  • 原文地址:https://www.cnblogs.com/wangjiachen666/p/9610307.html
Copyright © 2020-2023  润新知