今天我们来总结python常用数据类型,集合的基本操作:增删改查
目录
一、集合(set):不重复的无序小仓库
集合的三大特点:
- 元素不重复:自动去重,省心省力
- 无序:不能按顺序取,不能索引
- 元素必须是不可变类型:数字、字符串、元组可以,列表不行
创建集合的两种方式:
- 花括号法:
{元素1, 元素2}- set()函数:
set()创建空集合,或把其他类型转成集合
python
# 方式一:花括号直接创建(重复元素会自动去掉)
fruits = {"苹果", "香蕉", "橙子", "苹果"}
print(fruits)
# 方式二:用set()函数创建空集合
empty_set = set()
print(empty_set, type(empty_set))
# 把列表转成集合,自动去重
numbers = [1, 2, 2, 3, 3, 3, 4]
unique_numbers = set(numbers)
print(unique_numbers)

关键点 :空集合必须用set(),用{}创建的是空字典,这个坑别踩!
增加元素
add(元素):加一个元素update(可迭代对象):加多个元素
python
s = {"Python", "Java"}
# add()只能加单个元素
s.add("Go")
print(s) # 输出:{'Python', 'Java', 'Go'}
# update()可以加多个元素
s.update(["C++", "JavaScript"])
print(s) # 输出: {'Python', 'Java', 'Go', 'C++', 'JavaScript'}
关键 :++可迭代对象++就是可以逐一遍历其元素的数据结构(是可以用在for循环中的任何对象------字符串,元组,列表。集合),set.update()方法可以将这些对象中的每个元素都添加到集合中
删除元素
remove(元素):删除指定元素,不存在会报错(不推荐)discard(元素):删除指定元素,不存在也不报错(推荐)pop():随机删一个并返回它clear():清空集合
python
s = {"Python", "Java", "Go", "C++"}
# remove():元素不存在会报错
s.remove("Java")
print(s) # 输出:{'Python', 'C++', 'Go'}
# discard():元素不存在也不报错,更安全
s.discard("Go")
s.discard("不存在的") # 不会报错
print(s) # 输出:{'Python', 'C++'}
# pop():随机删除一个
removed = s.pop()
print(f"被删掉的是:{removed}") # 输出:被删掉的是:Python
print(f"剩下:{s}") # 输出:剩下:{'C++'}
# clear():全部清空
s.clear()
print(f"清空后:{s}") # 输出:清空后:set()
关键 :优先用discard(),比remove()安全一万倍!pop()随机删,clear()一键清空
查询元素
元素 in 集合:判断是否存在,存在返回True元素 not in 集合:判断是否不存在,不存在返回True
python
s = {"Python", "Java", "Go"}
# in判断是否存在
print("Python" in s) # 在集合里 True
print("JavaScript" in s) # 不在集合里 False
# not in判断不存在
print("JavaScript" not in s) # True
关键:集合的in查询速度比列表快得多,数据量越大优势越明显
集合运算(超实用)
方法列举:
集合1 | 集合2:并集(所有元素)集合1 & 集合2:交集(共同元素)集合1 - 集合2:差集(只在集合1里的)集合1 ^ 集合2:对称差集(只在一个集合里的)
python
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
# 并集:|
print(a | b) # {1, 2, 3, 4, 5, 6}
# 交集:&
print(a & b) # {3, 4}
# 差集:-
print(a - b) # {1, 2}
# 对称差集:^
print(a ^ b) # {1, 2, 5, 6}
关键点:集合运算在数据处理中经常用到,比如找共同用户、不同标签等
二、集合操作速查表
|----------|----------------|-----------------------|-------------------------|-----------------|
| 操作类型 | 方法/语法 | 示例代码 | 输出结果 | 注意事项 |
| 创建 | 花括号 | {"a","b"} | {'a','b'} | 空集合用set() |
| | set()转换 | set([1,2,2]) | {1,2} | 自动去重 |
| 增加 | add() | s.add("c") | {'a','b','c'} | 只能加一个元素 |
| | update() | s.update(["d","e"]) | {'a','b','c','d','e'} | 可加多个 |
| 删除 | discard() | s.discard("a") | {'b','c'} | 推荐!安全 |
| | remove() | s.remove("b") | {'c'} | 不存在会报错 |
| | pop() | s.pop() | 随机删一个 | 返回被删元素 |
| 查询 | in | "c" in s | True/False | 比列表快得多 |
| 运算 | 并集 | | {1}|{2} | {1,2} | 合并元素 |
| | 交集 & | {1,2} & {2,3} | {2} | 共同元素 |
| | 差集 - | {1,2} - {2,3} | {1} | 只在第一个集合 |
| | 对称差集 ^ | {1,2} ^ {2,3} | {1,3} | 只在一个集合 |