zoukankan      html  css  js  c++  java
  • python中set集合的使用

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

    python 的集合类型和 其他语言类似, 是一个无序不重复元素集

    基本功能包括关系测试和消除重复元素.集合对象还支持union(联合), intersection(交), difference(差)和sysmmetricdifference(对称差集)等数学运算


    1.先看下python 集合 类型的不重复性,可以把它转换成集合类型,然后在由集合类型转换成其他的类型。

    a = [2,3,4,2,1]
    a = set(a)
    print a
    集合a的结果是:set([1, 2, 3, 4])
    下一步要实现排序,我们又想到了一个比较简单的方法,因为集合没有排序方法,而列表有排序的方法,所以我们们把它转换成python 列表 的类型,调用列表的排序方法。
    a = list(a)
    a.sort()
    print a
    列表a的结果是:[1,2,3,4]

    在这里顺便说一下a.sort()的用法:

    列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。

    1
    2
    3
    x = [4, 6, 2, 1, 7, 9]
    x.sort()
    print x #[1, 2, 4, 6, 7, 9]

    如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢

    1
    2
    3
    4
    5
    x =[4, 6, 2, 1, 7, 9]
    y = x[ : ]
    y.sort()
    print y #[1, 2, 4, 6, 7, 9]
    print x #[4, 6, 2, 1, 7, 9]

    注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本,地址指向相同。

    2.union(联合), intersection(交), difference(差)
    a = set('abcde')
    b = set('bdcf')
    求集合的交集:
    a & b
    结果是:set(['c', 'b', 'd'])

    求差集:
    a - b
    结果是:set(['a', 'e'])

    求联合:
    a | b
    结果是:set(['a', 'c', 'b', 'e', 'd', 'f'])

    2、访问集合

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

     for i in s:
        print i

    3、更新集合

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

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

     注意只有可变集合才能更新:

     se.add(0)

     print se

    set(['a', 0, 'h', 'm', 'o', 'n', 'p', 't', 'y'])

  • 相关阅读:
    关于冥想
    Read Later
    你追求的跟我相反
    UML for Java Programmers之dx实战
    20140525
    面试基础-语言基础篇
    面试基础-linux操作系统篇
    面试基础-数据库篇
    面试基础-计算机网络篇
    Eclipse同时编译多个cpp文件
  • 原文地址:https://www.cnblogs.com/aestheticism/p/5067970.html
Copyright © 2011-2022 走看看