今日课题,Python集合使用
一、集合使用
Python中的集合跟数学上的集合是一致的,不允许有重复元素,又因为无序,所以不能直接修改内容,但可以进行交集、并集、差集等运算。
1.1 集合定义
set_obj = {1, 3, 5, 7, 9}
1.2 集合推导式语法创建
set_obj = {item for item in range(1, 10, 2)}
print(set_obj)
// 打印:{1, 3, 5, 7, 9}
1.3 集合内容长度
set_obj = {item for item in range(1, 10, 2)}
length = len(set_obj)
print(length)
// 打印:5
1.4 集合添加元素
set_obj = {item for item in range(1, 10, 2)}
set_obj.add(11)
print(set_obj)
// 打印:{1, 3, 5, 7, 9, 11}
1.5 集合删除元素-随机
通过pop随机移除一个元素,返回被移除的元素,原集合也会被修改。
如果集合为空会抛错:KeyError
set_obj = {item for item in range(1, 10, 2)}
remove_item = set_obj.pop()
print(remove_item, set_obj)
// 打印:1 {3, 5, 7, 9}
1.6 集合删除元素-指定
通过discard移除一个元素,成功返回None,原集合也会被修改。
如果集合没有该元素,也返回None,不会报错
set_obj = {item for item in range(1, 10, 2)}
set_obj.discard(9)
print(set_obj)
// 打印:{1, 3, 5, 7}
1.7 集合删除元素-指定
通过remove移除一个元素,成功返回None,原集合也会被修改。
如果元素不存在于集合中会抛错:KeyError
set_obj = {item for item in range(1, 10, 2)}
remove_item = set_obj.remove(1)
print(remove_item, set_obj)
// 打印:None {3, 5, 7, 9}
1.8 集合拷贝
set_obj = {item for item in range(1, 10, 2)}
obj = set_obj.copy()
print(obj)
// 打印:{1, 3, 5, 7, 9}
1.9 集合清空
set_obj = {item for item in range(1, 10, 2)}
set_obj.clear()
print(set_obj)
// 打印:set()
1.10 集合转数组
set_obj = {item for item in range(1, 10, 2)}
obj = list(set_obj)
print(obj)
// 打印:[1, 3, 5, 7, 9]
1.11 数组转集合
arr = [1, 3, 5, 7, 9]
obj = set(arr)
print(obj)
// 打印:{1, 3, 5, 7, 9}
1.12 集合的遍历
set_obj = {item for item in range(1, 10, 2)}
for item in set_obj:
print(item)
1.13 集合的并集
关键字:|,它会返回一个新的集合,效果等同于union
set_obj1 = {item for item in range(1, 10, 2)}
set_obj2 = {item for item in range(0, 10, 2)}
un1 = set_obj1 | set_obj2
print(un1)
// 打印:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
关键字:union,它会返回一个新的集合
set_obj1 = {item for item in range(1, 10, 2)}
set_obj2 = {item for item in range(0, 10, 2)}
un1 = set_obj1.union(set_obj2)
print(un1)
// 打印:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
关键字:update,它会在原集合上进行修改,并且参数可以是list也可以是set
set_obj1 = {item for item in range(1, 10, 2)}
arr = {item for item in range(0, 10, 2)}
set_obj1.update(arr)
print(set_obj1)
// 打印:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
1.14 集合的交集
关键字:&,它会返回一个新的集合,效果等同于intersection
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {0, 3, 5, 8, 9}
un1 = set_obj1 & set_obj2
print(un1)
// 打印:{9, 3, 5}
关键字:intersection,它会返回一个新的集合
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {0, 3, 5, 8, 9}
un1 = set_obj1.intersection(set_obj2)
print(un1)
// 打印:{9, 3, 5}
关键字:intersection_update,它会在原集合上进行修改
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {0, 3, 5, 8, 9}
set_obj1.intersection_update(set_obj2)
print(set_obj1)
// 打印:{9, 3, 5}
1.15 集合的差集
关键字:-,它会返回一个新的集合,效果等同于difference
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {0, 3, 5, 8, 9}
un1 = set_obj1 - set_obj2
print(un1)
// 打印:{1, 7}
关键字:difference,它会返回一个新的集合
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {0, 3, 5, 8, 9}
un1 = set_obj1.difference(set_obj2)
print(un1)
// 打印:{1, 7}
关键字:difference_update,它会在原集合上进行修改
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {0, 3, 5, 8, 9}
set_obj1.difference_update(set_obj2)
print(set_obj1)
// 打印:{1, 7}
1.16 集合的对称差集
简单来说就是找出两者之间不同的数据
关键字:^,它会返回一个新的集合,效果等同于symmetric_difference
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {0, 3, 5, 8, 9}
un1 = set_obj1 ^ set_obj2
print(un1)
// 打印:{0, 1, 7, 8}
关键字:symmetric_difference,它会返回一个新的集合
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {0, 3, 5, 8, 9}
un1 = set_obj1.symmetric_difference(set_obj2)
print(un1)
// 打印:{0, 1, 7, 8}
关键字:symmetric_difference_update,它会在原集合上进行修改
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {0, 3, 5, 8, 9}
set_obj1.symmetric_difference_update(set_obj2)
print(set_obj1)
// 打印:{0, 1, 7, 8}
1.17 集合的子集
关键字:<=,它会返回一个布尔标识,说明当前对象是否是参数的子集
效果等同于使用:issubset
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {1, 3, 5}
un1 = set_obj2 <= set_obj1
print(un1)
// 打印:True
关键字:issubset,它会返回一个布尔标识,说明当前对象是否是参数的子集
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {1, 3, 5}
un1 = set_obj2.issubset(set_obj1)
print(un1)
// 打印:True
1.18 集合的超集
关键字:>=,它会返回一个布尔标识,说明当前对象是否是参数的超集
效果等同于使用:issubset
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {1, 3, 5}
un1 = set_obj1 >= set_obj2
print(un1)
// 打印:True
关键字:issubset,它会返回一个布尔标识,说明当前对象是否是参数的超集
set_obj1 = {1, 3, 5, 7, 9}
set_obj2 = {1, 3, 5}
un1 = set_obj1.issuperset(set_obj2)
print(un1)
// 打印:True
今日完成,打完手工!