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,"\n",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}\n{1}".format(f,type(f)));
116 #那么它可不可以将set转变成frozenset呢?
117 frozenset(d);
118 print("{0}\n{1}".format(d,type(d)));
119 #这样虽然没有报错,但是d的类型任然没有发生变化
120 #frozenset([d]);
121 #print("{0}\n{1}".format(d,type(d)));
122 #而这样写却直接报错了
123 #这里frozenset应该和set是不能相互转换的(我没查到)
124 
125 #集合推导式
126 #和列表推导式完全一致
127 #唯一的区别就是,结果输出是给了集合
128 #不做赘述

 

posted @ 2020-10-05 14:12  想活出点人样  阅读(355)  评论(0编辑  收藏  举报