python入门笔记(11)
集合:可变的数据类型,但里面的元素必须是不可更改的数据类型
具有无序性
不可重复性
当集合为空时,表示为set(),一定要记住不是set{}
- 创建集合
set1 = set({1,2,3})
print(set1)
set2 = {'huaxiaoyou','lalala','wode','mingzi','jiaoxiaohua',、}
print(set2)
#最后的结果为:{1, 2, 3}
#{'huaxiaoyou', 'lalala', 'mingzi', 'jiaoxiaohua', 'wode'}
#由于set集合是无序的,所以结果的顺序可能不一样
列表和字典是可更改的对象(即不可哈希),所以不能创建集合
set3 = {1,2,3,[2,3],{'name':'huaxiaoyou'}} # 错的
print(set3)
#最后结果会提示错误
- 增
add增:增加的元素不可拆分,而且其位置是不确定的(无序性)
set1 = {'huaxiaoyou','lalala','wode','mingzi','jiaoxiaohua'}
set1.add('女神')
print(set1)
#最后的结果为:{'女神', 'huaxiaoyou', 'lalala', 'mingzi', 'wode', 'jiaoxiaohua'}
#由于set集合是无序的,所以结果的顺序可能不一样
update增:增加的元素拆分之后输出,且无序
set1 = {'huaxiaoyou','lalala','wode','mingzi','jiaoxiaohua'}
set1.update('abc')
print(set1)
#最后的结果为:{'a', 'c', 'lalala', 'huaxiaoyou', 'b', 'wode', 'mingzi', 'jiaoxiaohua'}
3.删
pop删:随机删除,在实际应用中没有什么很大的用处
set1 = {'huaxiaoyou','lalala','wode','mingzi','jiaoxiaohua'}
#set1.pop() 随机删除,没有返回值
print(set1.pop()) # 随机删除,有返回值
print(set1)
#最后结果为jiaoxiaohua
#{'wode', 'huaxiaoyou', 'lalala', 'mingzi'}
#,因为是随机删除,所以结果不唯一
remove删:按照指定的元素删除
set1 = {'huaxiaoyou','lalala','wode','mingzi','jiaoxiaohua'}
set1.remove('lalala') # 按元素
print(set1)
#最后的结果为:{'mingzi', 'huaxiaoyou', 'wode', 'jiaoxiaohua'}
clean删:清空集合
set1 = {'huaxiaoyou','lalala','wode','mingzi','jiaoxiaohua'}
set1.clear()
print(set1) #set()
#最后的结果为:set()
del删:删掉集合
set1 = {'huaxiaoyou','lalala','wode','mingzi','jiaoxiaohua'}
del set1#最后的结果为什么都没有
#print(set1) 如果加上这行代码运行会报错
- 查
迭代查询set(可以更改的集合):
set1 = {'huaxiaoyou','lalala','wode','mingzi','jiaoxiaohua'}
for i in set1:
print(i)
"""
最后的结果为:
wode
jiaoxiaohua
huaxiaoyou
mingzi
lalala
"""
迭代查询frozenset(不可更改的集合、冻结集合):
s = frozenset('abcde')
print(s,type(s))
for i in s:
print(i)
"""
最后的结果为:
frozenset({'e', 'c', 'b', 'a', 'd'}) <class 'frozenset'>
e
c
b
a
d
"""
交集查询:两集合之间共有的元素集合
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
set3 = set1 & set2
print(set3) # &方法求交集
print(set1.intersection(set2)) # intersection方法求交集
#最后的结果为:{4,5}
#{4,5}
并集查询:两集合中所有的元素集合
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2) # |方法求并
print(set2.union(set1)) # union方法求并
#最后结果为: {1, 2, 3, 4, 5, 6, 7}
# {1, 2, 3, 4, 5, 6, 7}
差集查询:两集合中不同的元素集合
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set2 - set1) # 方法1
#set1独有的
print(set1.difference(set2)) # 方法2
#最后结果:{8,6,7}
#{1, 2, 3}
对称差集查询:( ^或set1.symmetric_difference(set2)两种方法)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2) # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8}
子集:(< 或 <= 或issubset三种方法)
set1 = {1,2,3,}
set2 = {1,2,3,4,5,6}
print(set1 < set2)
print(set1.issubset(set1)) # 这两个相同,都是说明set1是set2子集。
#最后的结果为:True
#True 布尔值
父集:(> 或>= 或issuperset三种方法)
set1 = {1,2,3,}
set2 = {1,2,3,4,5,6}
print(set2 > set1)
print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1父集。
#最后的结果为:True
#True
- 去重
结果为集合的去重
li = [1,2,33,33,2,1,4,5,6,6]
set1 = set(li)
print(set1)
#最后的结果:{1, 2, 33, 4, 5, 6}
结果为列表的去重(set---->list,集合转换为列表)
li = [1,2,33,33,2,1,4,5,6,6]
set1 = set(li)
li = list(set1)
print(li)
#最后结果为:[1, 2, 33, 4, 5, 6]