Python set集合

一、 set集合概述

①set集合,是一个无序且不重复的元素集合。
②集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。
③集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。
④集合set是Python中一种基本数据类型,它分为可变集合(set)和不可变集合(frozenset)两种。

二、set的操作

1. set的创建

集合中set括号中需要的参数的数据类型有:序列(包括字符串、列表、元组),字典或者是另一个集合,但是不能是数值类型,如int类型。

s1=()  #创建空集合set()
print(s1)
s2=set(['carlos','alex','eric','tony']) #列表做参数
print(s2)
s3=set('carlos')#字符串做参数
print(s3)
s4=set((1,2,3))#元组做参数
print(s4)
s5=set({'name':'carlos','age':'26'})#元组做参数 , 只取值字典中的key
print(s5)

输出

()
{'tony', 'carlos', 'alex', 'eric'}
{'l', 'o', 'a', 's', 'r', 'c'}
{1, 2, 3}
{'age', 'name'}

s=set(['carlos','alex','eric','tony','carlos']) #set中的元素是无序不重复 的,可以利用这个特点去除列表中的重复元素
print(s)

输出
{'alex', 'carlos', 'tony', 'eric'}

2. set集合的添加

2.1 add(self, *args, **kwargs)把要传入的元素作为一个整体添加到集合中

s=set(['carlos','alex','eric','tony'])
print(s)
s.add('gary')
print(s)

输出

{'tony', 'carlos', 'alex', 'eric'}
{'tony', 'alex', 'gary', 'eric', 'carlos'}

2.2 update(self, *args, **kwargs) 要传入的元素拆分成单个字符,存于集合中,并去掉重复的字符

s=set(['carlos','alex','eric','tony'])
print(s)
s.update('amy')
print(s)

输出

{'tony', 'carlos', 'alex', 'eric'}
{'a', 'm', 'eric', 'tony', 'y', 'carlos', 'alex', 'gary'}

3.集合的删除 
   集合的删除操作使用的方法跟列表是一样的,使用的也是remove方法,若不存在,报错

s=set(['carlos','alex','eric','tony'])
print(s)
s.remove('alex')
print(s)

输出

{'tony', 'eric', 'alex', 'carlos'}
{'tony', 'eric', 'carlos'}

4. 集合的遍历

s=set(['carlos','alex','eric','tony'])
for i in s:
print(i)

输出

tony
eric
alex
carlos

s=set(['carlos','alex','eric','tony'])
for idx, i in enumerate(s) :
print(idx,i)

输出

0 tony
1 alex
2 eric
3 carlos

三、集合的一些操作符  

1.交集 python中求集合的交集使用的符号是“&”,返回连个集合的共同元素的集合,即集合的交集。 

s1=set('carlos')
print(s1)
s2=set('alex')
print(s2)
s=s1&s2
print(s)

输出

{'o', 's', 'r', 'c', 'l', 'a'}
{'x', 'l', 'a', 'e'}
{'l', 'a'}

2.并集(合集) Python中求集合的并集用的是符号“|”,返回的是两个集合所有的并去掉重复的元素的集合。

s1=set('carlos')
print(s1)
s2=set('alex')
print(s2)
s=s1|s2
print(s)

输出

{'s', 'r', 'c', 'o', 'l', 'a'}
{'e', 'l', 'a', 'x'}
{'s', 'x', 'r', 'c', 'o', 'e', 'l', 'a'}

3.差集  Python中差集使用的符号是减号“-”  ,返回的结果是在集合st1中但不在集合s2中的元素的集合

s1=set('carlos')
print(s1)
s2=set('alex')
print(s2)
s=s1-s2
print(s)

输出

{'l', 's', 'r', 'a', 'c', 'o'}
{'a', 'l', 'x', 'e'}
{'r', 'c', 's', 'o'}

4.查看两个集合的不同之处,使用的difference函数,等价于差集

   不同指的是集合s3相对于集合s1,不同的地方,也就是所有在集合s1中,而不再集合s2中的的元素组成的新集合。

s1=set('carlos')
s2=set('alex')
s=s1-s2
s3=s1.difference(s2)
print(s)
print(s3)

输出

{'r', 'o', 'c', 's'}
{'r', 'o', 'c', 's'}

5. 集合的范围判断

集合可以使用大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)来判断某个集     合是否完全包含于另一个集合,也可以使用子父集判断函数。 返回值为True 或者False。

6. 集合的成员运算符  使用成员运算符,in和not in,判断某个对象是否是集合中的成员

s1=([1,2,3,4,5,])
result=1 in s1
print(result)
result=4 not in s1
print(result)

输出

True
False

7. 求集合的长度  使用len()函数

s1=([1,2,3,4,5,])
result=len(s1)
print(result)

输出 5

四、set的方法

class set(object):
"""
set() -> new empty set object
set(iterable) -> new set object Build an unordered collection of unique elements.
"""
def add(self, *args, **kwargs): # real signature unknown
"""
Add an element to a set. This has no effect if the element is already present.
"""
pass def clear(self, *args, **kwargs): # real signature unknown
""" Remove all elements from this set. """
pass def copy(self, *args, **kwargs): # real signature unknown
""" Return a shallow copy of a set. """
pass def difference(self, *args, **kwargs): # real signature unknown
"""
Return the difference of two or more sets as a new set. (i.e. all elements that are in this set but not the others.)
"""
pass def difference_update(self, *args, **kwargs): # real signature unknown
""" Remove all elements of another set from this set. """
pass def discard(self, *args, **kwargs): # real signature unknown
"""
Remove an element from a set if it is a member. If the element is not a member, do nothing.
"""
pass def intersection(self, *args, **kwargs): # real signature unknown
"""
Return the intersection of two sets as a new set. (i.e. all elements that are in both sets.)
"""
pass def intersection_update(self, *args, **kwargs): # real signature unknown
""" Update a set with the intersection of itself and another. """
pass def isdisjoint(self, *args, **kwargs): # real signature unknown
""" Return True if two sets have a null intersection. """
pass def issubset(self, *args, **kwargs): # real signature unknown
""" Report whether another set contains this set. """
pass def issuperset(self, *args, **kwargs): # real signature unknown
""" Report whether this set contains another set. """
pass def pop(self, *args, **kwargs): # real signature unknown
"""
Remove and return an arbitrary set element.
Raises KeyError if the set is empty.
"""
pass def remove(self, *args, **kwargs): # real signature unknown
"""
Remove an element from a set; it must be a member. If the element is not a member, raise a KeyError.
"""
pass def symmetric_difference(self, *args, **kwargs): # real signature unknown
"""
Return the symmetric difference of two sets as a new set. (i.e. all elements that are in exactly one of the sets.)
"""
pass def symmetric_difference_update(self, *args, **kwargs): # real signature unknown
""" Update a set with the symmetric difference of itself and another. """
pass def union(self, *args, **kwargs): # real signature unknown
"""
Return the union of sets as a new set. (i.e. all elements that are in either set.)
"""
pass def update(self, *args, **kwargs): # real signature unknown
""" Update a set with the union of itself and others. """
pass def __and__(self, *args, **kwargs): # real signature unknown
""" Return self&value. """
pass def __contains__(self, y): # real signature unknown; restored from __doc__
""" x.__contains__(y) <==> y in x. """
pass def __eq__(self, *args, **kwargs): # real signature unknown
""" Return self==value. """
pass def __getattribute__(self, *args, **kwargs): # real signature unknown
""" Return getattr(self, name). """
pass def __ge__(self, *args, **kwargs): # real signature unknown
""" Return self>=value. """
pass def __gt__(self, *args, **kwargs): # real signature unknown
""" Return self>value. """
pass def __iand__(self, *args, **kwargs): # real signature unknown
""" Return self&=value. """
pass def __init__(self, seq=()): # known special case of set.__init__
"""
set() -> new empty set object
set(iterable) -> new set object Build an unordered collection of unique elements.
# (copied from class doc)
"""
pass def __ior__(self, *args, **kwargs): # real signature unknown
""" Return self|=value. """
pass def __isub__(self, *args, **kwargs): # real signature unknown
""" Return self-=value. """
pass def __iter__(self, *args, **kwargs): # real signature unknown
""" Implement iter(self). """
pass def __ixor__(self, *args, **kwargs): # real signature unknown
""" Return self^=value. """
pass def __len__(self, *args, **kwargs): # real signature unknown
""" Return len(self). """
pass def __le__(self, *args, **kwargs): # real signature unknown
""" Return self<=value. """
pass def __lt__(self, *args, **kwargs): # real signature unknown
""" Return self<value. """
pass @staticmethod # known case of __new__
def __new__(*args, **kwargs): # real signature unknown
""" Create and return a new object. See help(type) for accurate signature. """
pass def __ne__(self, *args, **kwargs): # real signature unknown
""" Return self!=value. """
pass def __or__(self, *args, **kwargs): # real signature unknown
""" Return self|value. """
pass def __rand__(self, *args, **kwargs): # real signature unknown
""" Return value&self. """
pass def __reduce__(self, *args, **kwargs): # real signature unknown
""" Return state information for pickling. """
pass def __repr__(self, *args, **kwargs): # real signature unknown
""" Return repr(self). """
pass def __ror__(self, *args, **kwargs): # real signature unknown
""" Return value|self. """
pass def __rsub__(self, *args, **kwargs): # real signature unknown
""" Return value-self. """
pass def __rxor__(self, *args, **kwargs): # real signature unknown
""" Return value^self. """
pass def __sizeof__(self): # real signature unknown; restored from __doc__
""" S.__sizeof__() -> size of S in memory, in bytes """
pass def __sub__(self, *args, **kwargs): # real signature unknown
""" Return self-value. """
pass def __xor__(self, *args, **kwargs): # real signature unknown
""" Return self^value. """
pass __hash__ = None

set源码

1、add(self, *args, **kwargs)    将元素 添加到集合s中,若重复则不进行任何操作

     update(self, *args, **kwargs) 将集合 x 并入原集合s中,x 还可以是列表,元组,字典等,x 可以有多个,用逗号分开

2、clear(self, *args, **kwargs)  删除 set 中的所有元素

3、copy(self, *args, **kwargs)  复制集合

4、difference(self, *args, **kwargs)  返回一个新的 set 包含 s1中有但是s2中没有的元素(生成新集合,不改变原集合)

difference_update(self, *args, **kwargs) 返回一个新的 set 包含 s1和 s2中不重复的元素(改变原集合)

s1=set('carlosalexamy')
s2=set('alextong')
s3=s1.difference(s2)
s4=s1.difference_update(s3)
print(s3)
print(s4)

输出

{'s', 'c', 'm', 'r', 'y'}
None

5、discard(self, *args, **kwargs)    如果在 set “s”中存在元素 x, 则删除。若不存在,不会引发错误

s1=set(['carlos','alex','eric','tony'])
s1.discard('tony')
print(s1)

输出{'carlos', 'alex', 'eric'}

6、intersection(self, *args, **kwargs)  取交集,新建一个set

   intersection_update(self, *args, **kwargs) 取交集,修改原来set

7. isdisjoint(self, *args, **kwargs) 如果没有交集,返回Ture

8. issubset(self, *args, **kwargs)  是否是子集

9. issuperset(self, *args, **kwargs) 是否是父集

10. pop(self, *args, **kwargs)  删除并且返回 set “s”中的一个不确定的元素, 如果为空则引发 KeyError (在原集合拿走一个随机元素,并得到这个元素, 这个是两个动作)

s1=set(['carlos','alex','eric','tony'])
result=s1.pop()
print(s1)
print(result)

输出

{'carlos', 'tony', 'alex'}
eric

11. remove(self, *args, **kwargs)   从 set “s”中删除元素 x, 如果不存在则引发 KeyError(在原集合拿走一个指定元素,无返回值)

s1=set(['carlos','alex','eric','tony'])
result=s1.remove('alex')
print(s1)
print(result)

输出

{'carlos', 'tony', 'eric'}
None 

12.  symmetric_difference(self, *args, **kwargs) 取差集,新建一个set

       symmetric_difference_update(self, *args, **kwargs) 取差集,改变原来set

13.  union(self, *args, **kwargs)   取并集

 五、 举例子

自学Python2.5-基本数据类型-set集合的更多相关文章

  1. 自学Python2.1-基本数据类型-字符串str(object)

    Python str方法总结 class str(object): """ str(object='') -> str str(bytes_or_buffer[, ...

  2. 自学Python2.1-基本数据类型-字符串str(object) 上

    自学Python之路 自学Python2.1-基本数据类型-字符串str(object) 上 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串 ...

  3. 自学Python2.1-基本数据类型-字符串方法 下

    自学Python之路 自学Python2.1-基本数据类型-字符串方法 下 class str(object): """ str(object='') -> str ...

  4. 自学Python2.4-基本数据类型-字典dict(objct)

    Python dict方法总结 一.字典介绍 1.字典概述 ①字典是python中唯一内建的映射类型.又称关联数组或散列②映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关 ...

  5. 自学Python2.3-基本数据类型-元组tuple(object) 方法

    Python tuple方法总结 一.元组的简介 1.元组与列表一样,也是一种序列,但是唯一不同的元组是不能修改的 2.元组的元素不可修改,但是元组元素的元素是可以修改的 3.元组通过()括起来表示 ...

  6. 自学Python2.2-基本数据类型-列表list(object)

    Python List方法总结 一. 列表简介: 列表是序列对象,可包含任意的Python数据信息,如字符串.数字.列表.元组等   列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加.修改 ...

  7. 自学Python2.9-循环(while、for)

    自学Python之路 自学Python2.9-循环(while.for) 1. while循环 Python中while语句的一般形式: while 判断条件: 语句 作用:提高开发效率,提高代码重用 ...

  8. Python之路【第四篇】python基础 之基本数据类型之集合

    基本数据类型之集合 set set集合,是一个无序且不重复的元素集合 # set 不允许重复的集合 set允许重复的列表但是集合是无序的 #例如 # s = {1,23,23,4,55,55} # p ...

  9. MySQL数据库数据类型之集合类型SET测试总结

    MySQL数据库提供针对字符串存储的一种特殊数据类型:集合类型SET,这种数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧,前面介绍了首先介绍了四种数据类型的特性总结,其后又分别 ...

随机推荐

  1. 处理ASP.NET Core中的HTML5客户端路由回退

    在使用由Angular,React,Vue等应用程序框架构建的客户端应用程序时,您总是会处理HTML5客户端路由,它将完全在浏览器中处理到页面和组件的客户端路由.几乎完全在浏览器中... HTML5客 ...

  2. [转载] 快速理解Kafka分布式消息队列框架

    转载自http://blog.csdn.net/xiaolang85/article/details/18048631 ==是什么 == 简单的说,Kafka是由Linkedin开发的一个分布式的消息 ...

  3. 基于Spring开发的一个BIO-RPC框架(对新人很友好)

    PART1:先来整体看下项目的构成 其中bio-rpc-core就是所谓的rpc框架 bio-rpc-example-client即所谓的服务调用方(你的项目中想要调用服务的地方) bio-rpc-e ...

  4. Python For嵌套循环 图形打印X型 nested loop -练习题

    For嵌套循环图形打印作业很多是C++语言做的,我觉得Python应该也能做,就来试一试. 原网址C++练习题:http://www.imooc.com/qadetail/216848?t=33880 ...

  5. Python 函数相关概念

    高阶函数  数学概念 y=g(f(x))  在数学和计算机科学中,高阶函数应当至少满足下面一个条件的函数   条件1. 接受一个或多个函数作为参数  条件2. 输出一个函数 举例: def count ...

  6. 神奇的 routing mesh - 每天5分钟玩转 Docker 容器技术(100)

    接上一节案例,当我们访问任何节点的 8080 端口时,swarm 内部的 load balancer 会将请求转发给 web_server 其中的一个副本. 这就是 routing mesh 的作用. ...

  7. Unity3d_GUI_2__(能量条的学习)

    这和上一篇有点跳跃,不过GUI有官方文档,而且也可以查看编辑器自带的脚本文档,多看看API,多操作操作,肯定能熟练的.所以这篇我就介绍下一点小技巧,大佬就略过这篇了,不适合大佬,会被你们教育的. 1. ...

  8. RAC环境下误操作将数据文件添加到本地存储

    今天碰到个有意思的事情,有客户在Oracle RAC环境,误操作将新增的数据文件直接创建到了其中一个节点的本地存储上. 发现网上去搜的话这种问题还真不少,对应解决方案也各式各样,客户问我选择哪种方案可 ...

  9. log4net使用注意事项

    1配置Log4net Log4net的配置文件有几种使用方式,这里将配置log4net的部分独立出来,即关于log4net的配置独立成文件log4net.config. 1)写入Mysql log4n ...

  10. H5页面项目的思路整理

    这是H5项目完成后的一些整理,有些理解不能非常准确,希望大家能帮忙指出. 移动端的适配 一些名词解释 visual viewport 可视视图 layout viewport 布局视图 vm 可视视图 ...