Python 数据容器(3) - set(集合)

为什么使用集合
  • 通过特性来分析
    • 列表可修改,支持重复元素且有序。
    • 元祖、字符串不可修改、支持重复元素且有序。

如果场景需要对内容做去重处理、列表、元祖、字符串就不方便了。而集合,最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序。

基本语法
 # 定于集合字面量
{元素, 元素,....., 元素}
 # 定义集合变量
变量名称 = {元素, 元素,....., 元素}
 # 定义空集合
变量名称 = set() 

和列表、元祖、字符串等定义基本相同:

  • 列表使用: []
  • 元祖使用:()
  • 字符串使用:“”
  • 集合使用: {}
names = {"zhangsan", "lisi", "wangwu", "zhangsan"}
print(names)
# 结果 {'lisi', 'wangwu', 'zhangsan'}

结果中可见:去重且无序 因为要对元素做去重处理,所以无法保证顺序和创建的时候一致

集合的常用操作

首先,因为集合是无序的,所以集合不支持:下标索引访问。但是集合和列表是一样允许修改的。

添加新元素
# 语法: 集合.add(元素)。将指定元素,添加到集合内。
# 集合本身被修改,添加了新元素
my_set = {"one", "two"}
my_set.add("three")
print(my_set)
# 结果 {'three', 'one', 'two'}
移除新元素
# 语法:集合.remove(元素),将指定元素,从集合内移除
# 结果:集合本身被修改,移除了元素
my_set = {"one", "two", "three"}
my_set.remove("one")
print(my_set)
# 结果:{'two', 'three'}

从集合随机取出元素
# 语法: 集合.pop(), 从集合中随机取出一个元素
# 结果:会得到一个元素的结果,同时集合本身被修改,元素被移除
my_set = {"one", "two", "three"}
element = my_set.pop()
print(my_set)
print(element)
#结果 {'one', 'three'}  two
清空集合
# 语法:集合.clear(),清空集合
# 结果 集合本身被清空
my_set = {"one", "two", "three"}
my_set.clear()
print(my_set)
# 结果set()
取出2个集合的差集
# 语法: 集合1.difference(集合2),取出集合1和集合2的差集(集合1有而集合2没有的)
# 结果: 得到一个新集合,集合1和集合2不变
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.difference(set2)
print(set3)
print(set2)
print(set1)
# 结果:
# {2, 3}
# {1, 5, 6}
# {1, 2, 3}

消除2个集合的差集
# 语法: 集合1.difference_update(集合2), 在集合1内,删除和集合2相同的元素
# 结果: 集合1被修改,集合2不变
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set1.difference_update(set2)
print(set1)
print(set2)
# 结果:
# {2, 3}
# {1, 5, 6}
2个合集合并
# 语法: 集合1.union(集合2) 将集合1和集合2合并新集合
# 结果: 得到新集合,集合1和集合2不变
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.union(set2)
print(set3)
# 结果:{1, 2, 3, 5, 6}
查看集合的元素数量
# 语法:len(集合) 统计集合内有多少元素
# 结果: 得到一个整数结果
set1 = {1, 2, 3}
print(len(set1))
#结果:3
for循环遍历
set1 = {1, 2, 3}
for i in set1:
    print(i)
# 结果
# 1
# 2
# 3

集合不支持下标索引,所以也就不支持使用while循环

集合常用功能总结

在这里插入图片描述

集合总结
  • 可以容纳多个数据(混装)
  • 数据是无序存储的(不支持下标索引)
  • 不允许重复数据存在
  • 可以修改(增加或删除元素等)
  • 支持for循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值