美文网首页Python学习手册
Python数据类型-集合

Python数据类型-集合

作者: 复苏的兵马俑 | 来源:发表于2020-01-30 21:31 被阅读0次

    7、集合(Set)

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

    7.1、创建集合

    a、定义一个集合,将元素用 {}扩起来。

    # example:
    set01 = {'Kevin', 'Jose', 'Delia'}
    print('set01 = {}'.format(set01))
    
    # 运行结果:
    set01 = {'Jose', 'Kevin', 'Delia'}
    

    b、使用set()命令来创建集合

    # example:
    set01 = set("student")
    print('set01 = {}'.format(set01))
    
    # 运行结果:
    set01 = {'d', 'e', 'n', 's', 'u', 't'}
    

    从上面的定义中可以看出,定义好的集合输出后元素都进行了重新排列,这也正是体现了集合无序的特征。

    7.2、集合元素的去重

    从定义上可以看出,集合(set)是一种无序不重复的序列,那么我们在定义一个集合的过程中,如果该集合中重复出现了某个或者某些元素,该集合在输出的时候,将只保留一个该元素,而会将多余重复的元素删除。

    # example:
    set01 = {'Kevin', 'Jose', 'Delia','Kevin','Loki','Delia'}
    print('set01 = {}'.format(set01))
    
    # 运行结果:
    set01 = {'Kevin', 'Loki', 'Jose', 'Delia'}
    
    7.3、集合的运算
    # example:
    set01 = {'Kevin','Jose','Delia','Worker'}
    set02 = {'Student','Worker','Teacher','Kevin'}
    print('set01 - set02 = {}'.format(set01 - set02))
    print('set01 & set02 = {}'.format(set01 & set02))
    print('set01 | set02 = {}'.format(set01 | set02))
    print('set01 ^ set02 = {}'.format(set01 ^ set02))
    
    # 运行结果:
    set01 - set02 = {'Jose', 'Delia'}
    set01 & set02 = {'Kevin', 'Worker'}
    set01 | set02 = {'Student', 'Delia', 'Jose', 'Worker', 'Teacher', 'Kevin'}
    set01 ^ set02 = {'Student', 'Delia', 'Jose', 'Teacher'}
    

    a、set01 - set02:集合set01中包含而集合set02中不包含,换句话说就是集合set01减去与set02中重复的元素,剩余的元素,需要注意的是,如果集合set02中有set01中没有的元素,这个相减的结果是不包括这些元素的。
    b、set01 & se02:集合set01和集合set02中共同包含的元素,相当于两个集合的交集。
    c、set01 | set02:集合set01和集合set02中包含的所有元素,相当于两个集合的并集。
    d、set01 ^ set02: 集合set01和集合set02中不同时包含的元素,可以理解为并集减去交集剩余的部分。

    7.4、集合中添加元素

    向集合中添加元素有两种方法,一种是set.add(object),一种是set.update()
    区别是,前者是将单个元素添加到集合中,如果集合中本身存在这个元素,则根据不重复原则,将不改变已有内容;后者向集合中添加元素不限于单个元素,也可以是列表、元组、字典等。
    a、add()

    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 add(self, *args, **kwargs):  # real signature unknown
        """
        向集合中添加一个元素。
        如果元素已经存在,则此操作无效。
        """
        pass
    

    b、update()

    def update(self, *args, **kwargs):  # real signature unknown
        """ Update a set with the union of itself and others. """
        pass
    
    def update(self, *args, **kwargs):  # real signature unknown
        """ 使用自身和其他的并集更新集合。 """
        pass
    
    # example:
    set01 = {'Kevin','Jose','Delia'}
    set01.add('Loki')
    print('set01 = {}'.format(set01))
    set01.add('Jose')
    print('set01 = {}'.format(set01))
    list01 = [2,3,4]
    dict01 = {
        'name': 'Sarah',
        'age': 28,
        'sex': '女',
    }
    set01.update(list01,dict01)
    print('set01 = {}'.format(set01))
    
    # 运行结果:
    set01 = {'Jose', 'Kevin', 'Delia', 'Loki'}
    set01 = {'Jose', 'Kevin', 'Delia', 'Loki'}
    set01 = {2, 3, 4, 'Kevin', 'Delia', 'Loki', 'age', 'Jose', 'name', 'sex'}
    

    需要注意的一点是,通过测试发现,利用update方法往集合中增加元素的时候,整数或者整型是不被允许的,会报错。此外,字典虽然可以被添加,但是只是把键添加进去了,而值则被忽略掉了。

    7.5、集合中删除元素

    从集合中删除元素共有三种方法:set.remove(object)set.dicard(object)set.pop()
    前两种都是对集合中指定元素的删除,如果元素存在于集合中,效果是一样的。如果要删除的元素不存在于集合中,remove方法就会报错,而discard方法则不会报错,pop方法则是随机删除集合中的一个元素。
    a、remove()

    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 remove(self, *args, **kwargs):  # real signature unknown
        """
        从集合中移除一个元素;它必须是一个成员。
        如果元素不是成员,则引发密钥错误。
        """
        pass
    

    b、dicard()

    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 discard(self, *args, **kwargs):  # real signature unknown
        """
        如果元素是成员,则从集合中删除它。
        如果元素不是成员,则什么也不做。
        """
        pass
    

    c、pop()

    def pop(self, *args, **kwargs):  # real signature unknown
        """
        Remove and return an arbitrary set element.
        Raises KeyError if the set is empty.
        """
        pass
    
    def pop(self, *args, **kwargs):  # real signature unknown
        """
        删除并返回任意的集合元素。
        如果集合为空,则引发KeyError。
        """
        pass
    
    # example:
    set01 = {'Kevin','Jose','Delia'}
    set02 = {'Student','Worker','Teacher'}
    set03 = {85,12,28}
    set01.remove('Kevin')
    set02.discard('Student')
    set03.pop()
    print('set01 = {}'.format(set01))
    print('set02 = {}'.format(set02))
    print('set03 = {}'.format(set03))
    
    # 运行结果:
    set01 = {'Jose', 'Delia'}
    set02 = {'Teacher', 'Worker'}
    set03 = {12, 85}
    
    7.6、其他相关

    len(set):计算集合的元素个数
    set.clear():清空集合
    object in set:判断元素object是否在集合set中,如果是,返回True,如果不是,返回False。
    a、len()

    def len(*args, **kwargs): # real signature unknown
        """ Return the number of items in a container. """
        pass
    
    def len(*args, **kwargs): # real signature unknown
        """ 返回集合中元素的个数。 """
        pass
    

    b、clear()

    def clear(self, *args, **kwargs):  # real signature unknown
        """ Remove all elements from this set. """
        pass
    
    def clear(self, *args, **kwargs):  # real signature unknown
        """ 从这个集合中删除所有元素。 """
        pass
    
    # example:
    set01 = {'Kevin','Jose','Delia'}
    print('len(set01) = {}'.format(len(set01)))
    if 'Kevin' in set01:
        print(True)
    else:
        print(False)
    set01.clear()
    print('set01 = {}'.format(set01))
    
    # 运行结果:
    len(set01) = 3
    True
    set01 = set()
    

    相关文章

      网友评论

        本文标题:Python数据类型-集合

        本文链接:https://www.haomeiwen.com/subject/xhumthtx.html