zoukankan      html  css  js  c++  java
  • python基础知识 -- set集合

    Set集合:是Python的一个基本数据类型。一般不是很常用。Set中的元素是不重复的,无序的,里面的元素必须是可hash的(int,str,tuple,bool)。我们可以这样来计Set就是dict类型的数据但是不保存value,只保存key,set也用{}表示。

    注意:set集合中的元素必须是可hash的,但是set本身是不可hash的,set是可变的。【即为:set内部不能有set】

    #定义一个set集合
    s = {'a'}
    print(s) 
    print(type(s))
    
    #实例化
    s1 = set()#声明一个空set集合
    
    #s3 = {123,[12,34,4]} #报错  TypeError: unhashable type: 'list'
    #s3 = {123,(12,34,4)} #正常
    #s4 = {123,{12,34,4}} #报错
    

      执行结果:

    {'a'}
    <class 'set'>
    

      set集合中的元素是不重复的,且无序的

    #set中的元素是不重复的,且无序的
    s2 = {'abc','12','bd','abc',True,False}
    print(s2) #去重   {False, True, '12', 'abc', 'bd'}
    

    set中的常用操作:

      1)增加

    >>> s = {"张三","李四","王五"}
    >>> s.add("赵六") #重复的内容不会被添加到set集合中
    >>> s
    {'王五', '李四', '赵六', '张三'}
    >>> s.update("薛七") #迭代更新 即把“薛”和“七”分别加入set集合
    >>> s
    {'王五', '薛', '七', '李四', '赵六', '张三'}
    

      2)删除

    >>> s.pop()#随机删除一个元素
    '王五'
    >>> s.remove("张三")#直接删除元素,如果不存在这个元素,删除会报错
    >>> s
    {'薛', '七', '李四', '赵六'}
    >>> s.clear()#清空set集合需要注意的是set集合如果是空的,打印出来是set(),因为要和dict区分
    >>> s
    set()
    

      3)修改

      set集合中的数据没有索引,也没用办法去定位一个元素,所以没有办法进行直接修改。我们可以采用先删除后添加的方式来完成修改操作。

    >>> s = {"张三","李四","王五"}
    >>> s.remove("张三")
    >>> s.add("赵六")
    >>> s
    {'王五', '李四', '赵六'}
    

      4)查询

      set是一个可迭代对象,可以进行for循环

    >>> for el in s:
    	print(el)
    
    王五
    李四
    赵六
    

      5)常用操作

    #求交集
    >>> s1 = {"张三","李四","王五"}
    >>> s2 = {"王五","赵六","薛七"}
    >>> s1 & s2
    {'王五'}
    >>> s1.intersection(s2)
    {'王五'}
    
    #求并集
    >>> s1 | s2
    {'王五', '薛七', '李四', '赵六', '张三'}
    >>> s1.union(s2)
    {'王五', '薛七', '李四', '赵六', '张三'}
    
    #求差集
    >>> s1 - s2
    {'李四', '张三'}
    >>> s1.difference(s2)
    {'李四', '张三'}
    
    #求反交集  集两个set集合中单独存在的数据元素
    >>> s1 ^ s2
    {'张三', '李四', '赵六', '薛七'}
    >>> s1.symmetric_difference(s2)
    {'张三', '李四', '赵六', '薛七'}
    
    #子集
    >>> s3 = {"张三","李四"}
    >>> s4 = {"张三","李四","王五"}
    >>> s1 < s2
    False
    >>> s3 < s4
    True
    
    #超集
    >>> s1 > s2
    False
    >>> s3.issuperset(s4)
    False
    >>> 
    

      

  • 相关阅读:
    PHP获取指定的时间戳
    Elasticsearch
    git有用基本指令
    php中的json_decode
    有用的sql积累
    git submodule使用原理
    mysql重复插入时insert更改为update更新操作
    jpm
    awk 语句
    tomcat 发布简单的html网站
  • 原文地址:https://www.cnblogs.com/tanxu05/p/9902042.html
Copyright © 2011-2022 走看看