数据容器之集合set()
集合是不允许重复的,且不能保证顺序
集合定义:
{元素, 元素, 元素, ... 元素}
变量名称 = {元素, 元素, 元素, ... 元素}
变量名称 = set()
示例:
name_set = {"张三", "李四", "王五", "张三", "李四", "王五"}
name_set_empty = set()
# 集合name_set的内容是:{'李四', '王五', '张三'},类型是<class 'set'> 重复的元素去除掉了,并且顺序改变了
print(f"集合name_set的内容是:{name_set},类型是{type(name_set)}")
# 集合name_set_empty的内容是:set(),类型是<class 'set'>
print(f"集合name_set_empty的内容是:{name_set_empty},类型是{type(name_set_empty)}")
集合是无序的 所以不支持通过下标索引访问,但是集合是允许修改的
- 集合添加元素,add(元素)。
name_set = {"张三", "李四", "王五"}
name_set.add("赵六")
print(name_set)
2.移除元素,集合.remove("元素")。
name_set = {"张三", "李四", "王五", "赵六"}
name_set.remove("赵六")
print(name_set)
- 从集合中随机取出元素,集合.pop("元素") 会得到取出的结果,并且原集合被修改,删除取出的元素。
name_set = {"张三", "李四", "王五", "赵六"}
str = name_set.pop()
print(str)
print(name_set)
- 清空集合,集合.clear()。
name_set = {"张三", "李四", "王五", "赵六"}
name_set.clear()
print(name_set) # set()
5.获得两个集合的差集(集合1有而集合2没有),原集合不会改变,如果集合1有的集合2都有,那么返回空集合。语法:集合1.difference(集合2)。
name_set1 = {"张三", "李四", "王五", "赵六"}
name_set2 = {"张三", "李四", "王五"}
str = name_set1.difference(name_set2)
print(str) # "赵六"
print(name_set1) # {'赵六', '李四', '张三', '王五'}
- 消除两个集合的差集,从集合1中删除和集合2重复的元素,集合1被改变,集合2不变。语法:集合1.difference_updata(集合2)。
name_set1 = {"张三", "李四", "王五", "赵六"}
name_set2 = {"张三", "李四", "王五"}
name_set1.difference_update(name_set2)
print(name_set1) # {'赵六'}
print(name_set2) # {'王五', '李四', '张三'}
- 合并集合,union()返回新的集合,顺序改变,原集合不改变。集合1.union(集合2)。
name_set1 = {"张三", "李四", "王五", "赵六"}
name_set2 = {"张三", "李四", "王五"}
new_set = name_set1.union(name_set2)
print(new_set) # {'李四', '张三', '王五', '赵六'}
print(name_set1) # {'张三', '王五', '李四', '赵六'}
print(name_set2) # {'张三', '王五', '李四'}
8.统计集合元素数量,len(集合)。
name_set = {"张三", "李四", "王五", "赵六"}
print(len(name_set)) # 4
获取的元素数量输去重之后的数量。
num_set = {1, 2, 1, 3, 2, 4, 5}
print(len(num_set)) # 5 去掉了集合中重复的元素
- 集合的循环,集合不支持使用下标获取,所以不支持whilt循环,但可以使用for循环,但是顺序是不一致的。
name_set = {"张三", "李四", "王五", "赵六"}
for item in name_set:
print(item)