我就不记录集合的定义、以及高数中集合用法之类的东西了,指记录在我学到的python中,集合的用法等等的内容。
1、集合特征:
● 无序;
● 组成元素不可重复;
● 其内元素为不可变类型;
● 集合是可变类型,但也可定义为不可变集合;
2、常用语法:
s = {'路飞','索大','娜美','布鲁克','山治','乔巴','路飞','香克斯'}
s.add('路飞') # 追加元素
s.update() # update 就是add多个值,按数据库update理解
s.clear() # 清除集合内全部元素
s.copy() # 复制集合
s.pop() # 随机删除元素
s.remove('路飞') # 指定删除,不存在会报错
s.discard('路飞') # 指定删除,不存在不报错
3、交并补差:
p_s = {'路飞','索大','娜美','布鲁克','山治'}
j_s = {'香克斯','白胡子','大妈','路飞','黑胡子','凯多'}
# 交集 &
print(p_s.intersection(j_s)) # 求交集
print(p_s & j_s) # 求交集,简写
# 并集 |
print(p_s.union(j_s)) # 求并集
print(p_s | j_s) # 求并集,简写
# 补集 ^
print(p_s.symmetric_difference(j_s)) # 求补集
print(p_s ^ j_s) # 求补集,简写
# 差集 -
print(p_s.difference(j_s)) # 求差集,
print(p_s - j_s) # 求差集,简写
# 补充
p_s.difference_update(j_s) # 等价于:p_s = p_s - j_s
p_s.intersection_update(j_s) # 等价于:p_s = p_s & j_s
print(p_s.isdisjoint(j_s)) # 判定是否有交集 输出布尔值
print(p_s.issubset(j_s)) # 判定(子集) 输出布尔值
print(p_s.issuperset(j_s)) # 判定(父集) 输出布尔值
4、定义不可变集合:
s = frozenset('hello')
5、引申概念,利用集合的不可重复性,可进行去重;
但是我试了,比如列表,去重后无法恢复列表原有顺序;(虽然简单了,但是要慎重使用;)
# 使用举例:
p_n = ['路飞','索大','娜美','布鲁克','山治','香克斯','白胡子','大妈','路飞','黑胡子','凯多']
n = list(set(p_n))
print(n)
# 输出:
# ['黑胡子', '娜美', '大妈', '布鲁克', '路飞', '白胡子', '索大', '山治', '香克斯', '凯多']
以此记录,后续再补!