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() 给集合添加元素
posted on 2020-08-07 14:03  小小喽啰  阅读(339)  评论(0编辑  收藏  举报