假期第(13)天

集合
l 集合是无序可变序列,使用一对大括号(作者温馨提
示:这一点和字典很类似,千万不要搞混啊)作为界
定符,元素之间使用逗号分隔,同一个集合内的每个
元素都是唯一的,元素之间不允许重复
l 拓展知识:字典和集合的in操作比列表快很多。由于
Python字典和集合都使用hash表来存储元素,因此元
素查找操作的速度非常快,这就直接决定了关键字in
作用于字典和集合时比作用于列表要快的多。
集合5
3
53
集合的创建与删除
l 直接将集合赋值给变量即可创建一个集合对象
>>> a = {3, 5}
#创建集合对象
>>> a
{3, 5}
>>> type(a)
#查看对象类型
<class 'set'>
l 也可以使用set()函数将列表、元组等其他可迭代对象
转换为集合,如果原来的数据中存在重复元素,则在
转换为集合的时候只保留一个
>>> a_set = set(range(8, 14)) #把range对象转换为集合
>>> a_set
{8, 9, 10, 11, 12, 13}
>>> b_set = set([0, 1, 2, 3, 0, 1, 2, 3, 7, 8])#转换时去掉重复元素
>>> b_set
{0, 1, 2, 3, 7, 8}
>>> x = set()
#空集合,只此一种方式
>>> x
{}
l 使用del命令删除整个集合
集合5
4
5
4
集合元素的增加与删除
l 集合对象的add()方法可以为其增加新元素,如果该
元素已存在于集合则忽略该操作
l update()方法用于合并另外一个集合中的元素到当前
集合中
>>> s = {1, 2, 3}
>>> s.add(3)
#添加元素,重复元素自动忽略
>>> s
{1, 2, 3}
>>> s.update({3,4}) #更新当前集合,自动忽略重复元素
>>> s
{1, 2, 3, 4}
集合5
55
5
集合元素的删除
l 集合对象的pop()方法用于随机删除并返回集合中的
一个元素,如果集合为空则抛出异常
l remove()方法用于删除集合中的元素,如果指定元素
不存在则抛出异常
l discard()用于从集合中删除一个特定元素,如果元素
不在集合中则忽略该操作
l clear()方法清空集合删除所有元素
>>> s.discard(5) #删除元素,不存在则忽略该操作
>>> s
{1, 2, 3, 4}
>>> s.remove(5) #删除元素,不存在就抛出异常
Traceback (most recent call last):
File "<pyshell#425>", line 1, in <module>
s.remove(5)
KeyError: 5
>>> s.pop() #删除并返回一个元素
集合 15
6
5
6
集合操作-1
>>> a_set = set([8, 9, 10, 11, 12, 13])
>>> b_set = {0, 1, 2, 3, 7, 8}
>>> a_set | b_set
#并集
{0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13}
>>> a_set.union(b_set)
#并集
{0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13}
>>> a_set & b_set
#交集
{8}
>>> a_set.intersection(b_set) #交集
{8}
>>> a_set.difference(b_set)
#差集
{9, 10, 11, 12, 13}
>>> a_set - b_set
#差集
{9, 10, 11, 12, 13}
>>> a_set.symmetric_difference(b_set) #对称差集
{0, 1, 2, 3, 7, 9, 10, 11, 12, 13}
>>> a_set ^ b_set
#对称差集
集合 {0, 1, 2, 3, 7, 9, 10, 11, 12, 13}5
57
7
集合操作-2
>>> x = {1, 2, 3}
>>> y = {1, 2, 5}
>>> z = {1, 2, 3, 4}
>>> x < y #比较集合大小
False
>>> x < z
True
>>> y < z
False
>>> x.issubset(y) #测试是否为子集
False
>>> x.issubset(z)
True
集合5
8
5
8
集合应用示例
l 可以使用集合快速提取序列中单一元素,即提取出序
列中所有不重复元素,如果使用传统方式的话,需要
编写下面的代码:
>>> import random
#生成100个介于0到9999之间的随机数
>>> listRandom = [random.choice(range(10000)) for i in range(100)]
>>> noRepeat = []
>>> for i in listRandom :
if i not in noRepeat :
noRepeat.append(i)
>>> len(listRandom)
>>> len(noRepeat)
l 而如果使用集合的话,只需要下面这么一行代码就可
以了,可以参考上面的代码对结果进行验证。
>>>newSet = set(listRandom)
posted @ 2022-01-13 19:02  我的未来姓栗山  阅读(21)  评论(0编辑  收藏  举报