zoukankan      html  css  js  c++  java
  • python 补一个集合set之间的运算

    看到下面这个代码,不知道这个是什么意思:

    data=[['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],
                       ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],
                       ['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],
                       ['stop', 'posting', 'stupid', 'worthless', 'garbage'],
                       ['mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'],
                       ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']]
    
    
    def createVocabList(dataSet):  #创建词库 这里就是直接把所有词去重后,当作词库
        vocabSet = set([])
        for document in dataSet:
            vocabSet = vocabSet | set(document)  #set 丨 set 是什么意思
        return list(vocabSet)
    
    createVocabList(data)

    一、首先了解一下什么是集合

    集合(set)是一个无序的不重复元素序列

    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

    #格式如下
    parame = {value01,value02,...}
    
    #或者
    set(value)

    二、集合之前的运算

    #set()之后都没有重复值
    a = set('abracadabra')   #{'a', 'b', 'c', 'd', 'r'}
    b = set('alacazam')  #{'a', 'c', 'l', 'm', 'z'}
    
    #a-b集合a中包含而集合b中不包含的元素
    a-b  # {'b', 'd', 'r'}
    
    # |或的意思,并集的意思,集合a或b中包含的所有元素
    a|b  #{'a', 'b', 'c', 'd', 'l', 'm', 'r', 'z'}
    
    # &且,交集,集合a和b中都包含了的元素
    a&b  #{'a', 'c'}
    
    # ^,不同时包含于a和b的元素 ,a有b没有,或者b有a没有
    a^b  #{'b', 'd', 'l', 'm', 'r', 'z'}

    三、集合的基本操作

    1.添加元素

    1.1 s.add(x) 将一个元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作,参数不能是list

    thisset = set(("Google", "Runoob", "Taobao"))
    thisset.add("Facebook")
    
    #{'Taobao', 'Facebook', 'Google', 'Runoob'}

    1.2 s.update(x) :可以添加多个元素,且参数可以是list ,  tuple ,  dict 等

    thisset = set(("Google", "Runoob", "Taobao"))
    thisset.update({1,3})  #{1, 3, 'Google', 'Taobao', 'Runoob'}
    
    thisset.update([1,4],[5,6])  
    #{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}

    二者的区别

    thisset = set(("Google", "Runoob", "Taobao"))
    thisset.update("Facebook")
    
    #{'F', 'Google', 'Runoob', 'Taobao', 'a', 'b', 'c', 'e', 'k', 'o'}

    2.移除元素

    1 s.remove( x )  将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
    2 s.discard( x )  是移除集合中的元素,且如果元素不存在,不会发生错误
    3 s.pop()  设置随机删除集合中的一个元素

    例子:

    #处理pop 有结果返回,其他的都没有结果返回
    
    thisset = set(("Google", "Runoob", "Taobao"))
    thisset.remove("Taobao")
    print(thisset)  #{'Google', 'Runoob'}
    thisset.remove("Facebook")   # 不存在会发生错误
    
    
    thisset = set(("Google", "Runoob", "Taobao"))
    thisset.discard("Facebook")  # 不存在不会发生错误
    
    thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
    thisset.pop()  #'Google'

    3.计算集合元素的个数

    thisset = set(("Google", "Runoob", "Taobao"))
    len(thisset)   # 3

    4.清空集合

    thisset = set(("Google", "Runoob", "Taobao"))
    thisset.clear()
    print(thisset)
    #set()

    5.判断元素在集合中是否存在

    #x in s ,判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
    thisset = set(("Google", "Runoob", "Taobao"))
     "Runoob" in thisset  #True
    "Facebook" in thisset  #False

    附录是集合的完整内置方法

    方法描述
    add() 为集合添加元素
    clear() 移除集合中的所有元素
    copy() 拷贝一个集合
    difference() 返回多个集合的差集
    difference_update() 移除集合中的元素,该元素在指定的集合也存在。
    discard() 删除集合中指定的元素
    intersection() 返回集合的交集
    intersection_update() 返回集合的交集。
    isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
    issubset() 判断指定集合是否为该方法参数集合的子集。
    issuperset() 判断该方法的参数集合是否为指定集合的子集
    pop() 随机移除元素
    remove() 移除指定元素
    symmetric_difference() 返回两个集合中不重复的元素集合。
    symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
    union() 返回两个集合的并集
    update() 给集合添加元素
  • 相关阅读:
    Reversing Encryption(模拟水题)
    Alphabetic Removals(模拟水题)
    Mishka and Contest(模拟水题)
    DFS中的奇偶剪枝(技巧)
    三分法搜索
    最短的包含字符串 (尺取)
    Android开发:最详细的 NavigationDrawer 开发实践总结
    Android开发:最详细的 Toolbar 开发实践总结
    Android开发:Translucent System Bar 的最佳实践
    Android微信智能心跳方案
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/13452508.html
Copyright © 2011-2022 走看看