python中的集合详解

目录

一.思考

二.集合

基本语法

 集合的常用操作——修改

1.添加新元素

 2.移除元素

 3.从集合中随机取出元素

 4.清空集合

5. 消除两个集合的差集

 6.两个集合的合并

注意:集合的遍历

三.集合总结


 

一.思考

 为什么使用集合?

我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景。为何又需要学习新的集合类型呢?

通过特性来分析:

  • 列表可修改.支持重复元素且有序
  • 元组、字符串不可修改.支持重复元素且有序

大家,有没有看出一些局限?

局限就在于:它们都支持重复元素。
如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。

而集合,最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序

二.集合

基本语法

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

  • 列表使用:[ ]
  • 元祖使用:( )
  • 字符串使用:" "
  • 集合使用:{ }

演示

my_set = {"你好","世界","程序设计"}
my_set1 =set()  #定义空集合
my_set2 = {"你好世界,程序设计"}
my_set3 = {"d","d","b","a"}
my_set4 = {"a","c","c","d"}


print(f"my_set的内容是{my_set},它的类型是{type(my_set)}")
print(f"my_set1的内容是{my_set1},它的类型是{type(my_set1)}")
print(f"my_set2的内容是{my_set2},它的类型是{type(my_set2)}")
print(f"my_set3的内容是{my_set3},它的类型是{type(my_set3)}")
print(f"my_set4的内容是{my_set4},它的类型是{type(my_set4)}")
#由结果可知最后输出的集合是无序、不重复的

结果是

 由结果可知最后输出的集合是无序、不重复的

set里面的元素可以是列表、元组、range对象等。另外,也可以是字符串,如果字符串,返回值将是包含全部不重复字符的集合。

my_set2 = {"你好世界,程序设计"}
my_set = set("你好世界,程序设计")
my_set1 = set([1,2.3,4,5.325,3])

print(f"my_set的内容是{my_set},它的类型是{type(my_set)}")
print(f"my_set2的内容是{my_set2},它的类型是{type(my_set2)}")
print(f"my_set1的内容是{my_set1},它的类型是{type(my_set1)}")

结果是

 集合的常用操作——修改

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

  • 添加新元素
  • 移除元素
  • 从集合中随机取出元素
  • 清空集合
  • 消除两个集合的差集
  • 两个集合合并
  • 统计集合元素数量len( )

1.添加新元素

语法:集合.add(元素)。将指定元素,添加到集合内
结果:集合本身被修改,添加了新元素

 2.移除元素

语法:集合.remove(元素),将指定元素,从集合内移除
结果:集合本身被修改,移除了元素

 3.从集合中随机取出元素

语法:集合.pop(),功能,从集合中随机取出一个元素
结果:会得到一个元素的结果。同时集合本身被修改,元素被移除

 4.清空集合

语法:集合.clear(),功能,清空集合
结果:集合本身被清空

5. 消除两个集合的差集

语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。
结果:集合1被修改,集合2不变

演示 

t1 = {"1","2","4"}
t2 = {"2","4","5"}
t1.difference_update(t2)
print(t1)
print(t2)

 6.两个集合的合并

语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
结果:得到新集合,集合1和集合2不变

 演示

注意:集合的遍历

集合不支持下标索引,不能用while循环但是可以用for循环

演示

三.集合总结

 经过上述对集合的学习,可以总结出集合有如下特点:

  1. 可以容纳多个数据
  2. 可以容纳不同类型的数据(混装)
  3. 数据是无序存储的(不支持下标索引)
  4. 不允许重复数据存在
  5. 可以修改(增加或删除元素等)
  6. 支持for循环

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳862

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值