zoukankan      html  css  js  c++  java
  • Python基本数据结构---set

    set 无序集合、key不重复

    无索引、无切片、作为一个无序的集合,set不记录元素位置或者插入点。因此,set不支持 indexing, slicing, 或其它类序列(sequence-like)的操作

    set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

    要创建一个set,需要提供一个list作为输入集合:

     s = set([1, 2, 3]):set([1,2,3])

     s = set('boy') : set(['b','o','y'])

     s = set(('cmd','pid')) :set(['cmd','pid'])

     s = {'txt', 'png', 'jpg', 'xls', 'csv', 'zip', 'xlsx', 'gif', 'GIF'}

    空的的集合:  set1 = set();

    函数:pop()、add()、remove()、update()、len()、clear()、discard()

    添加:add(key)、update();区别 s.add('boy'):set(['boy',1,2,3]);s.update('boy'):set(['boy','b',1,2,3,'o','y']);s.update([23,22,32])添加多项

    删除:remove(key)删除指定位置的元素,如果不存在,引发KeyError;pop()删除并且返回集合“s”中的一个不确定的元素, 如果为空则引发 KeyError;clear()删除所有元素;s.discard(x),如果在 set “s”中存在元素 x, 则删除

    交集:set1 & set2 (set1.intersection(set2))两个set的共有元素

    并集: set1 | set2 (set1.union(set2))两个set的元素相加后去重

    差集:set1 - set2 (set1.difference(set2)) 集合set1去除和和集合set2相同的部分

    对称差集:set1^set2 (set1.symmetric_difference(set2))项在set1或set2中,但不会同时出现在二者中

    操作:key in set1; key not in set1 ;for key in set1;

       set1.issubset(set2)等价于set1<=set2 : 测试set1中的每一个元素是否都在set2中

       set1.issuperset(set2)等价于set1>=set2 : 测试set2中的每一个元素是否都在set1中 

       s.copy()  返回 set “s”的一个浅复制  

    set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错

    重复元素在set中自动被过滤

    应用示例:怎么去除海量列表里重复元素:

    a = [11,22,33,44,11,22] 

    a = list(set(a)) :  [33, 11, 44, 22]  

  • 相关阅读:
    MyBatis之启动分析(一)
    通俗算法教程03
    数学倒底有没有绝对的严格性和形式化?
    通俗算法教程02
    .NET Core 中正确使用 HttpClient 的姿势
    通俗算法教程01
    我要写一篇文章吗?
    [ASP.NET MVC 小牛之路]18
    [ASP.NET MVC 小牛之路]17
    [ASP.NET MVC 小牛之路]16
  • 原文地址:https://www.cnblogs.com/fkkk/p/8898133.html
Copyright © 2011-2022 走看看