python的入门10
集合
集合为Python基本数据之一,它是无序的(排列顺序无序)、无索引的(不能通过下标索引)、不重复的(元素不重复);集合里面的元素必须是可hash的(int,str,tuple,bool)。可以与字典一起记忆,set就是dict类型的数据但是不保存value,只保存key,set也用{}表示。
集合不支持的功能:作为一种无序的多项集,集合并不记录元素位置或插入顺序。 相应地,集合不支持索引、切片或其他序列类的操作。
集合支持的功能:包括成员检测、从序列中去除重复项以及数学中的集合类计算,例如交集、并集、差集与对称差集等等。
1、创建集合
输出结果为:
当创建一个空括号,他的数据类型为字典,但是在括号里添加一堆没有映射关系的数字,则就为set集合类型。
2.集合的特点
集合特点:1、不同元素组成(不重复) 2、无序 3、集合中的元素必须是不可变类型
输出结果为:
{‘飞扬’, ‘张楠’, ‘贾爷’}
1.使用花括号内以逗号分隔元素的方式
输出结果为:
{‘张楠’, ‘飞扬’, ‘贾爷’}
2.使用集合推导式,类似列表推导式
输出结果为:
{‘d’, ‘r’, ‘c’, ‘a’, ‘b’}
具体来说,c for c in ‘abracadabra’ 是一个表达式,它遍历字符串 ‘abracadabra’ 中的每个字符,并将每个字符作为集合中的一个元素。这个表达式可以被解读为:对于字符串 ‘abracadabra’ 中的每个字符 c,将 c 添加到集合中。
在集合推导式中,你可以使用任意的迭代变量名,这里使用了两个相同的变量名 c,第一个 c 代表每个字符,而第二个 c 是将字符添加到集合中的语法。
3.使用类型构造器:set(基本数据类型)
分别将字符串、列表、元组、字典(只针对key键)转为集合
set1 = set(‘abcdecc’) # {‘b’, ‘d’, ‘e’, ‘a’, ‘c’}
set2 = set([1,2,3,4,5]) # {1, 2, 3, 4, 5}
set3 = set((‘a’,‘b’,‘c’)) # {‘c’, ‘a’, ‘b’}
set4 = set({‘a’:1,‘b’:2}) # {‘a’, ‘b’} value值舍弃
注:列表之所以会表现出来有序是因为set([1,2,3,4,5]) 表达式使用 set() 函数将列表 [1,2,3,4,5] 转换为一个集合。该列表中的每个元素都是独特的,因此在转换过程中不会发生重复。
如果你需要一个有序的集合,可以使用有序集合类型 list 或 tuple,它们会保留元素的插入顺序。
2.添加
了解集合的添加操作前,先了解列表的添加元素:
输出结果为:
[1, 2, 3, 4, 5, 6]
列表是有序的
1.add()方法
set = {1,2,3,4}
set.add(6)
print(set)
输出结果为:{1,2,3,4,6}#这个输出结果不会发生改变
2.update()方法
s = {1,2,3,4,5}
s.update([7,8])
print(s)
输出结果为:{1,2,3,4,5,7,8}#这个输出结果也不会发生改变
3.删除
删除各个函数的特点:
s.remove(x) 删除元素,不存在会报错
s.discard(x) 删除元素,不存在不会报错
n = s.pop() 随机删除一个元素,并返回删除的元素值
s.clear() 清空集合的所有元素
del s 删除整个集合,注意集合是不能索引下标的
1.remove(x):删除元素
输出结果为:
{‘飞扬’, ‘贾爷’, ‘小栋’}#和增加不一样,删除之后的集合还是无序的
2.discard(x):删除元素
输出结果为:
{‘小栋’, ‘高权’, ‘贾爷’, ‘飞扬’}
{‘小栋’, ‘高权’, ‘贾爷’, ‘飞扬’}
{1, 2, 3, 5, 6, 7}#删除之后的集合还是无序的
{1, 2, 3, 5, 6, 7}#删除之后的集合还是无序的
3.pop():随机删除一个元素
随机删除一个元素,并返回删除的元素。集合为无序的,即顺序无序,时刻都可能在变化,故pop()方法删除的元素是随机的。
s = {1,2,3,4,5,6,7}
pop_num = s.pop()
print(pop_num) # 1
4.clear():清空集合
s = {1,2,3,4,5,6,7}
s.clear()
print(s)
输出结果就为:
set()
5.del set
s = {1,2,3,4,5,6,7}
del s
# print(s) 报错,集合已经删除
# del s[0] 报错,集合不支持索引