• 数据结构-集合


    一、 目录

    1、集合概述

    2、集合相关操作

    3、集合类型操作符

    4、集合列表元组之间转换

    二、集合概述

    集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。

    集合元素(set elements):组成集合的成员

    1 >>> li=['a','b','c','a']

    2 >>> se =set(li)

    3 >>> se

    4 set(['a', 'c', 'b'])

    三、集合的相关操作

    1、创建集合

    由于集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()创建

    >>> s = set('beginman')

    >>> s

    set(['a', 'b', 'e', 'g', 'i', 'm', 'n'])

    2、访问集合

    由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。

    >>> 'a' in s

    True

    >>> 'z' in s

    False

    >>> for i in s:

        print i

        

    a

    h

    m

    o

    n

    p

    t

    y

    >>>

    3、更新集合

    可使用以下内建方法来更新:

    s.add()
    s.update()
    s.remove()

     

     四、集合类型操作符

    1、in ,not in
    2、集合等价与不等价(==, !=)
    3、子集

    >>> set('shop')<set('cheeshop')

    True

    >>> set('bookshop')>=set('shop')

    True

    4、联合(|)

    联合(union)操作与集合的OR操作其实等价的,联合符号有个等价的方法,union()。

    >>> s1=set('begin')

    >>> s2=set('man')

    >>> s3=s1|s2

    >>> s3

    set(['a', 'b', 'e', 'g', 'i', 'm', 'n'])

    >>> s1.union(s2)

    set(['a', 'b', 'e', 'g', 'i', 'm', 'n'])

    + 运算则不适合:

    >>> s3New = s1+s2

    Traceback (most recent call last):

      File "<pyshell#68>", line 1, in <module>

        s3New = s1+s2

    TypeError: unsupported operand type(s) for +: 'set' and 'set'

    5、交集(&)

    与集合AND等价,交集符号的等价方法是intersection()

    >>> s1&s2

    set(['n'])

    >>> s1.intersection(s2)

    set(['n'])

    6、查补(-)
    等价方法是difference()

    >>> s1-s2

    set(['i', 'b', 'e', 'g'])

    >>> s1.difference(s2)

    set(['i', 'b', 'e', 'g'])

    7、对称差分(^)

    对称差分是集合的XOR(‘异或’),取得的元素属于s1,s2但不同时属于s1和s2.其等价方法symmetric_difference()

    >>> s1^s2

    set(['a', 'b', 'e', 'g', 'i', 'm'])

    >>> s1.symmetric_difference(s2)

    set(['a', 'b', 'e', 'g', 'i', 'm'])

    注意:集合之间and,or

    >>> s1 and s2

    set(['a', 'm', 'n'])   #取 s2

    >>> s1 or s2

    set(['i', 'b', 'e', 'g', 'n']) #取 s1

    >>>

    五、集合、列表、元组、字符串之间转换

    >>> list(s1)

    ['i', 'b', 'e', 'g', 'n']

    >>> str(s1)

    "set(['i', 'b', 'e', 'g', 'n'])"

    >>> tuple(s1)

    ('i', 'b', 'e', 'g', 'n')

    应用:

    '''最简单的去重方式'''

    lis = [1,2,3,4,1,2,3,4]

    print list(set(lis))    #[1, 2, 3, 4]

  • 相关阅读:
    Apache 2.4+php 5.4 安装
    Linux 进程状态
    解决Redhat Linux AS使用yum时出现This system is not registered with RHN的问题(改用CentOS的yum)
    nagios 事件处理
    awk调用shell命令的两种方法:system与print
    磁盘性能分析
    如何通过JQuery将DIV的滚动条滚动到指定的位置
    GCC Windows Linux 下编译学习1
    Linux命令
    GCC Windows Linux 下编译学习2
  • 原文地址:https://www.cnblogs.com/liang545621/p/7523553.html
Copyright © 2020-2023  润新知