python入门基础学习之数据容器:set(集合)

数据容器:set(集合)

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

局限就在于:它们都支持重复元素。

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

集合的定义

基本语法:

定义集合变量:变量名称={元素,元素,…,元素}
定义空集合:变量名称=set()

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

列表使用:[]
元组使用:()
字符串使用:“”
集合使用:{}

注意:集合会自动去重且无序。

示例:

# 定义集合
my_set = {
    
    "my", "you", "ergou", "二狗", "ergou"}
my_set_empty = set()  # 定义空集合
print(f"my_set的内容是{
      
      my_set},类型是:{
      
      type(my_set)}")
print(f"my_set_empty的内容是{
      
      my_set_empty},类型是:{
      
      type(my_set_empty)}")

运行结果:
my_set的内容是{‘ergou’, ‘you’, ‘二狗’, ‘my’},类型是:<class ‘set’>
my_set_empty的内容是set(),类型是:<class ‘set’>

集合的常用操作–修改

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

添加新元素

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

移除元素

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

从集合中随机取出元素

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

清空集合

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

取出2个集合的差集

语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变

消除2个集合的差集

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

2个集合合并

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

示例:

my_set = {
    
    "my", "you", "ergou", "二狗", "ergou"}
# 添加新元素
my_set.add("python")
my_set.add("学习")
print(f"my_set条件元素后的内容是{
      
      my_set}")

# 移除元素
my_set.remove("you")
print(f"my_set移除元素后的内容是{
      
      my_set}")

# 随机取出一个元素
my_set = {
    
    "my", "you", "ergou", "二狗", "ergou"}
element = my_set.pop()
print(f"my_set集合被随机取出的元素是:{
      
      element},取出元素后的内容是{
      
      my_set}")

# 清空集合,clear
my_set.clear()
print(f"my_set清空后的内容是{
      
      my_set}")

# 取2个集合的差集
set1 = {
    
    1, 2, 3}
set2 = {
    
    1, 5, 6}
set3 = set1.difference(set2)
print(f"取出差集后的结果是:{
      
      set3}")
print(f"取差集后,原有的set1的内容:{
      
      set1}")
print(f"取出差集后,原有的set2的内容:{
      
      set2}")

# 消除2个集合的差集
set1 = {
    
    1, 2, 3}
set2 = {
    
    1, 5, 6}
set1.difference_update(set2)
print(f"消除差集后,set1的内容:{
      
      set1}")
print(f"消除差集后,set2的内容:{
      
      set2}")

# 2个集合合并为1个
set1 = {
    
    1, 2, 3}
set2 = {
    
    1, 5, 6}
set3 = set1.union(set2)
print(f"2个集合合并后的结果是:{
      
      set3}")
print(f"合并后set1的内容:{
      
      set1}")
print(f"合并后set2的内容:{
      
      set2}")

运行结果:

my_set条件元素后的内容是{‘python’, ‘ergou’, ‘you’, ‘my’, ‘二狗’, ‘学习’}
my_set移除元素后的内容是{‘python’, ‘ergou’, ‘my’, ‘二狗’, ‘学习’}
my_set集合被随机取出的元素是:ergou,取出元素后的内容是{‘you’, ‘二狗’, ‘my’}
my_set清空后的内容是set()
取出差集后的结果是:{2, 3}
取差集后,原有的set1的内容:{1, 2, 3}
取出差集后,原有的set2的内容:{1, 5, 6}
消除差集后,set1的内容:{2, 3}
消除差集后,set2的内容:{1, 5, 6}
2个集合合并后的结果是:{1, 2, 3, 5, 6}
合并后set1的内容:{1, 2, 3}
合并后set2的内容:{1, 5, 6}

集合的常用操作 - 集合长度

查看集合的元素数量

语法:len(集合)
功能:统计集合内有多少元素
结果:得到一个整数结果

示例:

# 统计集合元素数量len()
set1 = {
    
    1, 2, 3, 4, 5, 1, 2, 3, 4, 5}
num = len(set1)
print(f"集合内的元素数量有:{
      
      num}个")

运行结果:

集合内的元素数量有:5个

集合的常用操作 - for循环遍历

集合同样支持使用for循环遍历
要注意:集合不支持下标索引,所以也就不支持使用while循环

示例:

# 集合的遍历
# 集合不支持下标索引,不能用while循环
# 可以用for循环
set1 = {
    
    1, 2, 3, 4, 5}
for element in set1:
    print(f"集合的元素有:{
      
      element}")

运行结果:
集合的元素有:1
集合的元素有:2
集合的元素有:3
集合的元素有:4
集合的元素有:5

集合常用功能总结

编号 操作 说明
1 集合.add(元素) 集合内添加一个元素
2 集合.remove(元素) 移除集合内指定的元素
3 集合.pop() 从集合中随机取出一个元素
4 集合.clear() 将集合清空
5 集合1.difference(集合2) 得到一个新集合,内含2个集合的差集,原有的2个集合内容不变
6 集合1.difference_update(集合2) 在集合1中,删除集合2中存在的元素,集合1被修改,集合2不变
7 集合1.union(集合2) 得到1个新集合,内含2个集合的全部元素,原有的2个集合内容不变
8 len(集合) 得到一个整数,记录了集合的元素数量

集合的特点

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

集合练习——信息去重

现有列表:my_list = [‘二狗’, ‘ergou’, ‘er’, ‘ergou’, ‘我’, ‘二狗’]
请:
①定义一个空集合
②通过for循环遍历列表
③在for循环中将列表的元素添加至集合
④最终得到元素去重后的集合对象,并打印输出

my_list = ['二狗', 'ergou', 'er', 'ergou', '我', '二狗']
# 定义一个空集合
my_set = set()

# 通过for循环遍历列表
for element in my_list:
    # 在for循环中将列表的元素添加至集合
    my_set.add(element)

# 最终得到元素去重后的集合对象,并打印输出
print(f"列表的内容是:{
      
      my_list}")
print(f"通过for循环后,得到的集合对象是:{
      
      my_set}")

运行结果:

列表的内容是:[‘二狗’, ‘ergou’, ‘er’, ‘ergou’, ‘我’, ‘二狗’]
通过for循环后,得到的集合对象是:{‘我’, ‘二狗’, ‘ergou’, ‘er’}

猜你喜欢

转载自blog.csdn.net/weixin_44996886/article/details/132678446