zoukankan      html  css  js  c++  java
  • Python集合的方法

    Python 中的集合类似于数学中的集合概念,它是一组无序、不可重复数据的组合。集合用{ ...}创建,某种程度上可以把集合看作是没有值的字典。集合是Python里面非常重要的数据类型,其中的方法总共有17个,数量掌握这些方法,对数据的处理效率会大大提高,特别是在计算字符串长度,交集并集等,非常有用现在分享给大家。

    #获取集合的所有方法print(dir(set()))[..., 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

    01、add()

    描述:add() 方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。注意:集合中只能包含可哈希的对象,即 list,dict 都不能嵌入到集合

    语法:set.add(elmnt)

    参数:elmnt -- 必需,要添加的元素。

    添加不存在的元素set1 = {'周扬青','徐怀钰','Makiyo','Selina'}#建一个罗志祥的女友集合set1.add('罗玉凤')#给他加个凤姐进去set1{'Makiyo', 'Selina', '周扬青', '徐怀钰', '罗玉凤'}
    set1.add('乔碧萝')#再给罗志祥加个乔碧萝set1{'Makiyo', 'Selina', '乔碧萝', '周扬青', '徐怀钰', '罗玉凤'}
    #添加存在的元素set1.add('徐怀钰')set1{'Makiyo', 'Selina', '乔碧萝', '周扬青', '罗玉凤'}#我们发现,还是只有五个
    
    
    

    02、clear()

    描述:clear() 方法用于移除集合中的所有元素。

    语法:set.clear()

    参数:无。

    set1 = {'周扬青','徐怀钰','Makiyo','Selina'}#建一个罗志祥的女友集合set1.clear()#一下全部清除了set1set()#返回一个空集合
    
    
    

    03、copy()

    描述:copy() 方法用于复制一个集合,会重新生成一个

    语法:set.copy()

    参数:无

    set1 = {'周扬青','徐怀钰','Makiyo','Selina'}#建一个罗志祥的女友集合set2 = set1.copy()#直接复制产生一个新的集合,要多少有多少set2{'Makiyo', 'Selina', '周扬青', '徐怀钰'}
    
    

    04、difference()

    描述:difference() 方法用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中。也可以用set1 - set2 进行差运算,set1 减去 set1&set2 部分

    语法:set.difference(set)

    参数:set -- 必需,用于计算差集的集合

    set1 = {'周扬青','徐怀钰','Makiyo','Selina'}#建一个罗志祥的女友集合set2 = {'周扬青','徐怀钰','罗玉凤','乔碧萝'}#再建一个罗志祥的女友集合
    set1.difference(set2){'Makiyo', 'Selina'}
    
    

    05、difference_update()

    描述:difference_update() 方法用于移除两个集合中都存在的元素difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。

    语法:set.difference_update(set)

    参数:set -- 必需,用于计算差集的集合

    set1 = {'周扬青','徐怀钰','Makiyo','Selina'}#建一个罗志祥的女友集合set2 = {'周扬青','徐怀钰','罗玉凤','乔碧萝'}#再建一个罗志祥的女友集合set1.difference_update(set2)#无返回值print(set1){'Makiyo', 'Selina'}
    
    
    

    06、discard()

    描述:discard() 方法用于移除指定的集合元素。该方法不同于 remove() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。

    语法:set.discard(value)

    参数:value -- 必需,要移除的元素

    #构建一个罗志祥历任女友的集合set1 = {'周扬青','徐怀钰','Makiyo','Selina'}#现在我们拿走一个看看set1.discard('徐怀钰')set1{'Makiyo', 'Selina', '周扬青'}#人家还剩3个,真是
    #再拿走一个集合里面没有的,发现并没有报错set1.discard('女助理')set1{'Makiyo', 'Selina', '周扬青'}
    #用remove方法试试,发现就报错了set1.remove('女助理')KeyError: '女助理'
    
    
    

    07、intersection()

    描述:intersection() 方法用于返回两个或更多集合中都包含的元素,即交集。set1 & set2 #交运算

    语法:set.intersection(set1, set2 ...etc)

    参数:

    • set1 -- 必需,要查找相同元素的集合

    • set2 -- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 

    #两个集合取交集set1 = {'周扬青','徐怀钰','Makiyo','Selina'}#建一个罗志祥的女友集合set2 = {'周扬青','徐怀钰','罗玉凤','乔碧萝'}#再建一个罗志祥的女友集合set1.intersection(set2) {'周扬青', '徐怀钰'}
    #多个集合取交集x = {"a", "b", "c"}y = {"c", "d", "e"}z = {"f", "g", "c"}result = x.intersection(y, z)print(result){'c'}
    
    

    08、intersection_update()

    描述:intersection_update() 方法用于获取两个或更多集合中都重叠的元素,即计算交集。intersection_update() 方法不同于 intersection() 方法,因为 intersection() 方法是返回一个新的集合,而 intersection_update() 方法是在原始的集合上移除不重叠的元素。

    语法:set.intersection_update(set1,set2 ...etc)

    参数:

    • set1 -- 必需,要查找相同元素的集合

    • set2 -- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开

    set1 = {'周扬青','徐怀钰','Makiyo','Selina'}#建一个罗志祥的女友集合set2 = {'周扬青','徐怀钰','罗玉凤','乔碧萝'}#再建一个罗志祥的女友集合
    set1.intersection_update(set2)
    print(set1){'周扬青', '徐怀钰'}

    09、isdisjoint()

    描述:isdisjoint() 方法用于判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

    语法:set.isdisjoint(set)

    参数:set -- 必需,要比较的集合

    x = {"apple", "banana", "cherry"}y = {"google", "runoob", "facebook"}z = x.isdisjoint(y)print(z)True


    10、issubset()

    描述:issubset() 判断 set1 是否是 set2 的子集,如果是则返回 True,否则返回 False。

    语法:set.issubset(set)

    参数:set -- 必需,要比查找的集合

    x = {"a", "b", "c"}y = {"f", "e", "d", "c", "b", "a"}z = x.issubset(y)print(z)True
    x = {"a", "b", "c"}y = {"f", "e", "d", "c", "b"}z = x.issubset(y)print(z)False
    
    
    

    11、issuperset()

    描述:issuperset() 方法用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False。

    语法:set.issuperset(set)

    参数:set -- 必需,要比查找的集合

    x = {"f", "e", "d", "c", "b", "a"}y = {"a", "b", "c"}z = x.issuperset(y)print(z)True
    x = {"f", "e", "d", "c", "b"}y = {"a", "b", "c"}z = x.issuperset(y)print(z)False
    
    

    12、pop()

    描述:pop() 方法用于随机移除一个元素。

    语法:set.pop()

    参数:

    set1 = {'周扬青','徐怀钰','Makiyo','Selina'}set1.pop()'徐怀钰'
    set1 {'Makiyo', 'Selina', '周扬青'}
    
    

    13、remove()

    描述:remove() 方法用于移除集合中的指定元素。该方法不同于 discard() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。

    语法:set.remove(item)

    参数:item -- 要移除的元素

    #构建一个罗志祥历任女友的集合set1 = {'周扬青','徐怀钰','Makiyo','Selina'}#现在我们拿走一个看看set1.remove('徐怀钰')set1{'Makiyo', 'Selina', '周扬青'}#人家还剩3个,真是
    #再拿走一个集合里面没有的,发现并没有报错set1.discard('女助理')set1{'Makiyo', 'Selina', '周扬青'}
    #用remove方法试试,发现就报错了set1.remove('女助理')KeyError: '
    
    

     

    14、symmetric_difference()

    描述:symmetric_difference() 方法返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。

    语法:set.symmetric_difference(set)

    参数:set -- 集合

    set1 = {'周扬青','徐怀钰','Makiyo','Selina'}#建一个罗志祥的女友集合
    set2 = {'周扬青','徐怀钰','罗玉凤','乔碧萝'}#再建一个罗志祥的女友集合set1.symmetric_difference(set2) {'Makiyo', 'Selina', '乔碧萝', '徐怀钰', '罗玉凤'}
    
    
    

    15、symmetric_difference_update()

    描述:symmetric_difference_update() 方法移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

    语法:set.symmetric_difference_update(set)

    参数:set -- 要检测的集合

    set1 = {'周扬青','徐怀钰','Makiyo','Selina'} #建一个罗志祥的女友集合set2 = {'周扬青','徐怀钰','罗玉凤','乔碧萝'}#再建一个罗志祥的女友集合set1.symmetric_difference_update(set2)print(set1){'Selina', '乔碧萝', 'Makiyo', '罗玉凤'}
    
    

    16、union()

    描述:union() 取并集,效果等同于 | ,重复元素只会出现一次,但是括号里可以是 list,tuple,其他 , 甚至是 dict

    语法:set.union(set1, set2...)

    参数:

    • set1 -- 必需,合并的目标集合

    • set2 -- 可选,其他要合并的集合,可以多个,多个使用逗号 , 隔开。

    示例:

    
    
    #两个集合的并集set1 = {'小苹果','大桃子','长香蕉'}set2 = {'小李子','大萝卜','长香蕉'}set1.union(set2){'大桃子', '大萝卜', '小李子', '小苹果', '长香蕉'}#长香蕉只出现一次
    #三个集合并集set3 = {'烂柿子','罗志祥'}set1.union(set2,set3)
    {'大桃子', '大萝卜', '小李子', '小苹果', '烂柿子', '罗志祥', '长香蕉'}
    #集合和列表也可以set4=['小可爱','西红柿']set1.union(set4) {'大桃子', '小可爱', '小苹果', '西红柿', '长香蕉'}
    #利用交集并集来写一个字符串相似的小方法def jaccard_sim(arg0,arg1): set1 = set(arg0) set2 = set(arg1) sim = len(set1.intersection(set2))/len(set1.union(set2)) return(sim)#intersection 求集合的交集
    arg0 = '(质量问题)标识标签不合格'arg1 = '(质量问题)涉嫌质量不合格'jaccard_sim(arg0,arg1)0.6428571428571429
    #检测下两个标题的相似性arg0 = '罗志祥道歉人设崩塌:多个品牌商中枪 代言微博遭删除'arg1 = '凌晨五点的罗志祥:你知不知道为了出轨,我有多努力'jaccard_sim(arg0,arg1)0.1428571428571
    
    

    17、update()

     描述:update() 方法用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

    语法:set.update(set)

    参数:set -- 必需,可以是元素或集合

    x = {"apple", "banana", "cherry"}y = {"google", "runoob", "apple"}x.update(y)print(x){'banana', 'apple', 'google', 'runoob', 'cherry'}
  • 相关阅读:
    06. 如何去掉数组中的重复性数据
    01. 作用域和值类型引用类型的传递
    韩昊 20190919-5 代码规范,结对
    韩昊 20190919-6 四则运算试题生成,结对
    韩昊 20190919-2 功能测试
    韩昊20190912-1 每周例行报告
    将py文件打包为exe文件方法
    关于四个定义的理解
    韩昊 20190912-2 命令行
    韩昊 20190905-1 每周例行报告
  • 原文地址:https://www.cnblogs.com/zhengp/p/14711409.html
Copyright © 2011-2022 走看看