zoukankan      html  css  js  c++  java
  • Python基础13 集合的创建与修改 不可变集合 discard() set() frozenset()

      1 #集合
      2 
      3 #集合是一种可迭代 无序 不能包含重复元素的 数据结构
      4 #在不考虑顺序和重复性的情况下,序列和集合是可以相互替代的
      5 #集合分为可变集合和不可变集合
      6 #           set       frozenset
      7 
      8 #创建可变集合
      9 #直接用{}来创建 或者用set()来创建
     10 a={1,3,5,7,9,"1"};
     11 #b=set(1,2);
     12 #当我们这样写的时候又会报错
     13 #iterable要求可以迭代
     14 b=set((1,2,3,4,5))
     15 print(a,"
    ",b);
     16 #这里我们反复的重复这段语句
     17 #我们发现a中的"1"的位置总是在变动的
     18 #因为集合是无序的,我们无法向序列一样用下标来访问
     19 #print(a[0]);
     20 #所以这样的操作是无效的
     21 
     22 #而如果存在数据内容又重复的,他会自动的只保留一个数据
     23 b=set([1,2,1,2,1,2]);
     24 print(b);
     25 print(type(b));
     26 #输出结果也只有1和2
     27 
     28 c={};
     29 print(type(c));
     30 #这里就算{}中什么都没有,但是也已经创建了集合c
     31 #但是却不是set, 而是dict,就是字典
     32 
     33 #如果我们需要查看某个集合里面数据个数
     34 #需要使用len()函数!!!    是函数!!不是方法!!!
     35 print(len(b));
     36 
     37 print("///////////////////////////////////");
     38 
     39 #修改可变集合
     40 #add(elem)添加元素
     41 #如果元素已经存在,则不会重复添加,也不会异常抛出
     42 b.add(1);
     43 print(b);
     44 #输出结果还是1和2,也没有异常的抛出
     45 #注意一下,这个方法是没有返还值的
     46 print(b.add(3));
     47 #如果这么写的话,输出的结果就是None
     48 
     49 #上面我们建立的c的类型并不是set而是dict
     50 #c.add(1);
     51 #那么这句话就自然无法执行
     52 #因为.add是set的方法而不是dict的
     53 
     54 print("///////////////////////////");
     55 
     56 #删除元素
     57 #remove(elem);
     58 a.remove(1);
     59 print(a);
     60 #这里a中的1就被移除了
     61 #a.remove(55);
     62 #而移除的元素不在其中
     63 #就会抛出异常
     64 a.add(1);
     65 print(a.remove(1));
     66 #方法remove没有返还值
     67 
     68 #remove如果没有找到对应的值的时候
     69 #会异常抛出
     70 #我们也可以用discard(elem);来实现
     71 #discard就算没有找到对应的数据删除
     72 #也不会异常抛出
     73 
     74 a.discard(100);
     75 #程序并没有抛出错误
     76 a.add(100);
     77 a.discard(100);
     78 print(a);
     79 
     80 
     81 #除了remove我们还有pop可以使用
     82 #基本用法一致
     83 #pop()删除集合中任意一个元素并且告诉你删除的是哪一个
     84 d={1,2,3,4,5,6};
     85 print(d.pop());
     86 print(d);
     87 #返还值是1,而1也被移除了
     88 #我们也可以换种思维理解
     89 dd=d.pop();
     90 print(dd);
     91 print(d);
     92 #如果把代码写成这样
     93 #可以理解成取d中的一个元素赋值给了dd
     94 
     95 #clear()
     96 #清除集合,就不用多说了
     97 d.clear();
     98 print(d);
     99 
    100 #遍历集合
    101 #因为集合是没有索引的,所以不能通过下标来确定
    102 #但是可以通过for语句的循环来访问集合内的所有元素
    103 d={1,3,8,9,5,"p"};
    104 for x in d:
    105     print(x);
    106 #这样我们就可以访问集合里的所有元素了
    107 
    108 print("////////////////////////////////////");
    109 
    110 #不可变集合
    111 #frozenset(iterable);
    112 #来创建不可变集合,同时不能用{}来创建,那创建出来就是一个set可变的集合
    113 
    114 f=frozenset([1,8,3,5,4]);
    115 print("{0}
    {1}".format(f,type(f)));
    116 #那么它可不可以将set转变成frozenset呢?
    117 frozenset(d);
    118 print("{0}
    {1}".format(d,type(d)));
    119 #这样虽然没有报错,但是d的类型任然没有发生变化
    120 #frozenset([d]);
    121 #print("{0}
    {1}".format(d,type(d)));
    122 #而这样写却直接报错了
    123 #这里frozenset应该和set是不能相互转换的(我没查到)
    124 
    125 #集合推导式
    126 #和列表推导式完全一致
    127 #唯一的区别就是,结果输出是给了集合
    128 #不做赘述
    悟已往之不谏,知来者之可追
  • 相关阅读:
    js全局变量和局部变量
    mysql分组后保留n条数据
    记一次微信公众号的开发与后台搭建
    Excel 导入 Sql Server出错——“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”错误的解决
    一言之思-3
    时间获取
    sql基础的基础
    一言之思-2
    一言之思
    node.js日期
  • 原文地址:https://www.cnblogs.com/ljh-study/p/13769876.html
Copyright © 2011-2022 走看看