python - 第五天
集合:
集合(set)是一个无序的不重复元素序列。
集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合(集合和字典都是用大括号创建但里面的形式是不一样的)。
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建集合:
set1={value1,value2.....};set2=set(value);
使用set()函数将其他可迭代对象转换为集合.
set2=set(1,1,2,3,4); 这样直接就不行,会报错。
(在Python中,可迭代对象(Iterable)是指可以被用于循环(如 for 循环)的对象,即可以通过迭代器(Iterator)逐个访问其元素的对象。常见的可迭代对象包括列表(list)、元组(tuple)、字符串(str)、集合(set)和字典(dict)等。)
eg:
set1={1,2,3,4,5,1,2};#集合没有重复元素的意思就是说,如果有重复的元素,则只会保留一个。
print(set1);
print(type(set1));
set2=set([1,1,2,3,4]);#这个里面用的是列表
print(set2);
print(type(set2));
运行结果:
集合间的运算
集合之间的运算包括,差(-),交(|),并(&),异或(^)。
eg:
set1={1,2,3,4,5,"hh"};
set2={1,2,3,"oo"};
set3=set1-set2#差集,set3中的元素是set1中有,set2中没有的元素;
set4=set1|set2;#并集,set1的所有元素加上set2的所有元素,重复的元素只保留一个;
set5=set1&set2;#交集,set1和set2共有的元素;
set6=set1^set2;#对称差集,set1和set2中不同时存在的元素。
print(set3);
print(set4);
print(set5);
print(set6);
运行结果:
集合的基本操作:添加,移除,计算,清空,判断;
添加元素:
语法格式:
s.add( x );
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update( x );
.add(x) 中的 x 只能有一个,.update(x) 中 x 可以有多个,用逗号分开。
移除元素:
语法格式:
s.remove( x );
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
s.discard( x );
也可以设置随机删除集合中的一个元素,语法格式如下:
s.pop() ;
set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
计算集合元素个数
语法格式如下:
len(s);
清空集合
语法格式如下:
s.clear();
判断元素是否在集合中存在
语法格式如下:
x in s;
判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
set1={1,2,3,4};set1.add(5);#添加元素,只能添加一个元素,如果添加的元素已经存在,则不添加。
print(set1);set1.update([6,7],"hello",("hello","world"));#也是添加,但是可以添加多个元素,而且所添加的可以是不同类型。
print(set1); #注意,直接添加字符串,和通过列表添加字符串,在集合内的显示形式是不一样的 。
#直接添加字符串那个,最好集合中只有一个 l ,因为集合对重复元素只保存一个。 set1.remove(1);#删除,删除不存在元素会报错。这里不尝试,一会下面尝试
print(set1);set1.discard(2);#删除,删除不存在元素不会报错。
print(set1);set1.pop();#这里是随机删除,所以不指明元素,自己可以多调用这个函数几次,看看删除的结果是不是随机的。
print(set1);len_set1=len(set1);#获取集合的长度,就是集合内元素的个数。
print(len_set1);sign1= 4 in set1;#判断是否存在元素,存在返回True,不存在返回False。
sign2= 1 in set1;
print(f"sign1={sign1},sign2={sign2}");set1.clear();#清空集合
print(set1);set1.discard(1);#这里不会报错,因为集合是空的,所以删除不存在元素不会报错。
set1.remove(1);#这里会报错,因为集合是空的,所以删除不存在元素会报错。
运行结果: