前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python数据容器:集合

Python数据容器:集合

原创
作者头像
Heaven645
发布2024-07-21 21:59:36
260
发布2024-07-21 21:59:36
举报
文章被收录于专栏:Python学习

前言

在 Python 中,数据容器是组织和管理数据的重要工具,集合作为其中一种基本的数据结构,具有独特的特性和广泛的应用。本章详细介绍了集合的定义、常用操作以及遍历方法。


本篇文章参考:黑马程序员

一、集合的定义

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

通过特性来分析:

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

我们发现列表、元组、字符串这三个数据容器局限在于它们都支持重复元素。如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。而集合最主要的特点就是不支持元素的重复(自带去重功能)并且内容无序。

①基本语法:

定义集合使用花括号“{}”,且使用逗号隔开各个数据,数据可以是不同的数据类型。

  • 定义字面量: {元素1,元素2,元素3,元素4,...}
  • 定义变量: 变量名称 = {元素1,元素2,元素3,元素4,…}
  • 定义空元组: 变量名称 =set()

②特点:

  • 可容纳多个数据
  • 可容纳不同类型的数据(混装)
  • 可修改(增加或删除元素等)
  • 数据是无序存储的(不支持下标索引)
  • 不允许重复数据存在
  • 支持for循坏,不支持while循坏
代码语言:python
代码运行次数:0
复制
# 定义集合
my_set={"A","B","C","B","A"}
# 定义一个空集合
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的内容为{'A', 'C', 'B'},类型是<class 'set'>

my_set_empty的内容为set(),类型是<class 'set'>

二、集合的常用操作(方法)

因为集合是无序的,所以集合不支持下标索引访问。

集合的常用方法:

①添加元素:

将指定元素,添加到集合内,集合本身被修改。

语法:集合.add(元素)

代码语言:python
代码运行次数:0
复制
# 添加新元素
my_set={"A","B","C"}
my_set.add("D")
my_set.add("A")
print(f"my_set添加元素后结果为{my_set}")

输出结果:

my_set添加元素后结果为{'A', 'C', 'D', 'B'}

②移除元素:

将指定元素,从集合内移除,集合本身被修改。

语法:集合.remove(元素)

代码语言:python
代码运行次数:0
复制
# 移除元素
my_set={"A","B","C"}
my_set.remove("A")
print(f"my_set移除元素后结果为{my_set}")

输出结果:

my_set移除元素后结果为{'C', 'B'}

③随机取出元素:

从集合中随机取出一个元素,得到一个元素的结果,同时集合本身被修改,元素被移除。

语法:集合.pop()

代码语言:python
代码运行次数:0
复制
# 随机取出一个元素
my_set={"A","B","C"}
element=my_set.pop()
print(f"集合被取出的元素是{element},my_set移除元素后结果为{my_set}")

输出结果:

集合被取出的元素是A,my_set移除元素后结果为{'C', 'B'}

④清空集合:

清空集合。

语法:集合.clear()

代码语言:python
代码运行次数:0
复制
my_set={"A","B","C"}
my_set.clear()
print(f"my_set被清空后结果为{my_set}")

输出结果:

my_set被清空后结果为set()

⑤取出两个集合的差集:

取出集合1和集合2的差集(集合1有而集合2没有的),得到一个新集合,集合1和集合2不变。

语法:集合1.difference(集合2)

代码语言:python
代码运行次数:0
复制
# 取两个集合的差集
set1={1,2,3}
set2={4,2,7}
set3=set1.difference(set2)
print(f"取出差集后结果为{set3}")
print(f"取出差集后,set1内容为{set1}")
print(f"取出差集后,set2内容为{set2}")

输出结果:

取出差集后结果为{1, 3}

取出差集后,set1内容为{1, 2, 3}

取出差集后,set2内容为{2, 4, 7}

⑥消除两个集合的差集:

对比集合1和集合2,在集合1内删除和集合2相同的元素,集合1被修改,集合2不变。

语法:集合1.difference_update(集合2)

代码语言:python
代码运行次数:0
复制
# 消除差集
set1={1,2,3}
set2={4,2,7}
set1.difference_update(set2)
print(f"消除差集后,set1内容为{set1}")
print(f"消除差集后,set2内容为{set2}")

输出结果:

消除差集后,set1内容为{1, 3}

消除差集后,set2内容为{2, 4, 7}

⑦两个集合合并:

将集合1和集合2组合成新集合,得到新集合,集合1和集合2不变。

语法:集合1.union(集合2)

代码语言:python
代码运行次数:0
复制
# 两个集合合并
set1={1,2,3}
set2={4,2,7}
set3=set1.union(set2)
print(f"两个集合合并后结果为{set3}")
print(f"两个集合合并后,set1内容为{set1}")
print(f"两个集合合并后,set2内容为{set2}")

输出结果:

两个集合合并后结果为{1, 2, 3, 4, 7}

两个集合合并后,set1内容为{1, 2, 3}

两个集合合并后,set2内容为{2, 4, 7}

⑧统计集合长度:

统计集合内有多少元素,得到一个整数结果。

语法:len(集合)

代码语言:python
代码运行次数:0
复制
# 统计集合长度
set1={1,2,3}
num=len(set1)
print(f"集合内的元素数量为{num}")

输出结果:

集合内的元素数量为3

三、集合的遍历

集合不支持下标索引,所以不支持使用while循环,但是支持使用for循环遍历。

for循坏遍历:

代码语言:python
代码运行次数:0
复制
# 集合的遍历
# 集合不支持下标索引,所以不能用while循坏,可用for循坏
set1={1,2,3}
for element in set1:
    print(f"集合的元素有{element}")

输出结果:

集合的元素有1

集合的元素有2

集合的元素有3

【例题】

有如下列表对象:

my_list = ['新闻', '传播', '新闻', '传播', 'Hi', 'Python', 'Hi', 'Python', 'best',请按如下要求操作:

1.定义一个空集合

2.通过for循环遍历列表

3.在for循环中将列表的元素添加至集合

4.最终得到元素去重后的集合对象,并打印输出

代码语言:python
代码运行次数:0
复制
my_list = ['新闻', '传播', '新闻', '传播', 'Hi', 'Python', 'Hi', 'Python', 'best']
# 定义一个空集合
my_set=set()
# 通过for循坏遍历列表
for element in my_list:
    # 在for循坏中将列表元素添加至集合
    my_set.add(element)

print(f"列表的内容为{my_list}")
print(f"通过for循坏得到的集合为{my_set}")

输出结果:

列表的内容为'新闻', '传播', '新闻', '传播', 'Hi', 'Python', 'Hi', 'Python', 'best'

通过for循坏得到的集合为{'Hi', '传播', '新闻', 'Python', 'best'}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、集合的定义
  • 二、集合的常用操作(方法)
  • 三、集合的遍历
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档