Python 集合(Set)

在本文中,您将学习关于Python集的所有内容;如何创建它们、添加或删除其中的元素,以及在Python中对集合执行的所有操作。

Python中的集合是什么?

集合是项目的无序集合。每个元素都是唯一的(没有重复项),并且必须是不可变的(不能更改)。

但是,集合本身是可变的。我们可以在其中添加或删除项目。

集合可用于执行数学集合运算,例如并集,交集,对称差等。

如何创建集合?

通过将所有项目(元素)放在大括号{}中并用逗号分隔或使用内置函数来创建集合set()。

它可以具有任意数量的项目,并且它们可以具有不同的类型(整数,浮点数,元组,字符串等)。但是集合不能具有可变元素(例如list,set或dictionary)作为其元素。

示例# 整数集

my_set = {1, 2, 3}

print(my_set)

# 混合数据类型集

my_set = {1.0, "Hello", (1, 2, 3)}

print(my_set)

也尝试以下示例。

示例# 无重复集合

# 输出: {1, 2, 3, 4}

my_set = {1,2,3,4,3,2}

print(my_set)

#set不能包含可变项

#这里[3,4]是可变列表

#如果您取消注释第12行,

#这将导致错误。

# TypeError: unhashable type: 'list'

#my_set = {1, 2, [3, 4]}

# 我们可以从列表中生成集合

# 输出: {1, 2, 3}

my_set = set([1,2,3,2])

print(my_set)

创建一个空集有点特殊。

空括号{}将在Python中创建一个空字典。为了建立一个没有任何元素的集合,我们使用没有任何参数的set()函数。

示例# 用{}初始化

a = {}

# 检查a的数据类型

# 输出:

print(type(a))

# 初始化使用 set()

a = set()

# 检查a的数据类型

# 输出:

print(type(a))

如何在Python中更改集合?

集是可变的。但是由于它们是无序的,因此索引没有意义。

我们无法使用索引或切片来访问或更改集合的元素。集不支持它。

我们可以使用add()方法添加单个元素,使用update()方法添加多个元素。update()方法可以采用元组,列表,字符串或其他集合作为其参数。在所有情况下,都避免重复。

示例# 初始化 my_set

my_set = {1,3}

print(my_set)

# 如果取消注释第9行,

# 你会得到一个错误

# TypeError: 'set' object does not support indexing

#my_set[0]

# 增加一个元素

# 输出: {1, 2, 3}

my_set.add(2)

print(my_set)

# 增加多个元素

# 输出: {1, 2, 3, 4}

my_set.update([2,3,4])

print(my_set)

# 增加 list 和set

# 输出: {1, 2, 3, 4, 5, 6, 8}

my_set.update([4,5], {1,6,8})

print(my_set)

运行该程序时,输出为:{1, 3}

{1, 2, 3}

{1, 2, 3, 4}

{1, 2, 3, 4, 5, 6, 8}

如何从集合中删除元素?

可以使用discard()和remove()方法从集合中删除特定项目。

两者之间的唯一区别是,如果使用discard(),而项目不存在于集合中,则它保持不变。但是remove()在这种情况下会引发错误。

以下示例将说明这一点。

示例# 初始化 my_set

my_set = {1, 3, 4, 5, 6}

print(my_set)

# 抛弃一个元素

# 输出: {1, 3, 5, 6}

my_set.discard(4)

print(my_set)

# 移除已个元素

# 输出: {1, 3, 5}

my_set.remove(6)

print(my_set)

# 抛弃一个元素

# 没有出现在 my_set

# 输出: {1, 3, 5}

my_set.discard(2)

print(my_set)

# remove一个元素

# 没有出现在 my_set

# 如果没有注释#my_set.remove(2),

# 会抛出一个错误.

# Output: KeyError: 2

#my_set.remove(2)

同样,我们可以使用pop()方法删除并返回一个项目。

集合为无序,无法确定将弹出哪个项目。这是完全任意的。

我们还可以使用clear()方法删除集合中的所有项目。

示例# 初始化 my_set

# 输出: 唯一元素集

my_set = set("HelloWorld")

print(my_set)

# pop一个元素

# 输出: 随机元素

print(my_set.pop())

# pop 任意元素

# Output:随机元素

my_set.pop()

print(my_set)

# 清空 my_set

#输出: set()

my_set.clear()

print(my_set)

Python 集合操作

集合可用于执行数学集合运算,例如并集,交集,差和对称差。我们可以通过运算符或方法来实现。。

让我们考虑以下两组用于以下操作。>>> A = {1, 2, 3, 4, 5}

>>> B = {4, 5, 6, 7, 8}

集合并集

A和B的并集是来自这两个集合的所有元素的集合。

并集是使用|操作符执行的。也可以使用union()方法来完成。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 使用 | 运算符

# 输出: {1, 2, 3, 4, 5, 6, 7, 8}

print(A | B)

在Python shell上尝试以下示例。# 使用union 函数

>>> A.union(B)

{1, 2, 3, 4, 5, 6, 7, 8}

# 在B上使用并集函数

>>> B.union(A)

{1, 2, 3, 4, 5, 6, 7, 8}

集合相交

A和B的交集是在这两个集合中共有的一组元素。

交点使用&运算符执行。使用intersection()方法可以完成相同的操作。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 使用 & 运算符

# 输出 : {4, 5}

print(A & B)

在Python shell上尝试以下示例。# 在A上使用交集函数

>>> A.intersection(B)

{4, 5}

# 在B上使用交集函数

>>> B.intersection(A)

{4, 5}

集合差异

A和B的差(A-B)是仅在A中但不在B中的一组元素。类似地,B-A是B中但不在A中的一组元素。

差异是使用 -运算符执行的。使用difference()方法可以完成相同的操作。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 在A上使用 - 运算符

# Output: {1, 2, 3}

print(A - B)

在Python shell上尝试以下示例。# 在A上使用差异函数

>>> A.difference(B)

{1, 2, 3}

# 在B上使用-运算符符

>>> B - A

{8, 6, 7}

# 在B上使用差异函数

>>> B.difference(A)

{8, 6, 7}

集合对称差异

A和B的对称差异是A和B中的一组元素,但两者中的元素相同。

对称差使用^运算符执行。使用symmetric_difference()方法可以完成相同的操作。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 使用 ^ 运算符

# 输出: {1, 2, 3, 6, 7, 8}

print(A ^ B)

在Python shell上尝试以下示例。# 在A上使用symmetric_difference函数

>>> A.symmetric_difference(B)

{1, 2, 3, 6, 7, 8}

# 在B上使用symmetric_difference函数

>>> B.symmetric_difference(A)

{1, 2, 3, 6, 7, 8}

不同的Python集合方法

集合方法很多,上面已经使用了其中的一些方法。这是set对象可用的所有方法的列表。Python Set方法方法描述

将元素添加到集合中

从集合中删除所有元素

返回集合的副本

返回两个或多个集合的差作为新集合

如果元素是成员,则从集合中删除它。(如果元素不在集合中,则不执行任何操作)

返回两个集合的交集作为新集合

True如果两个集合的交点为空,则返回

返回 True另一个集合是否包含此集合

返回 True此集合是否包含另一个集合

删除并返回一个任意的set元素。提高KeyError,如果集合为空

从集合中删除一个元素。如果元素不是成员,则引发一个KeyError

返回新集合中集合的并集

用自身和其他元素的并集更新集合

其他集合操作

集合会员资格测试

我们可以使用in关键字来测试项目是否存在于集合中。

示例# 初始化 my_set

my_set = set("apple")

# 检查“a”是否存在

# 输出: True

print('a' in my_set)

# 检查“p”是否存在

# 输出: False

print('p' not in my_set)

遍历集合

使用for循环,我们可以遍历集合中的每个项目。>>> for letter in set("apple"):

... print(letter)

...

a

p

e

l

集合与内置函数

内置函数如all()、any()、enumerate()、len()、max()、min()、sort()、sum()等常用来与set一起执行不同的任务。带内置功能功能描述

如果集合的所有元素都为true(或者集合为空),则返回True。

如果集合中的任何元素为true,则返回True。 如果集合为空,则返回False。

返回一个枚举对象。它包含成对的所有项的索引和值。

返回集合中的长度(项目数)。

返回集合中最大的项目。

返回集合中最小的项目。

从集合中的元素返回一个新的排序列表(不对集合本身进行排序)。

返回集合中所有元素的总和。

Python Frozenset

Frozenset是具有集合特征的新类,但是一旦分配,就不能更改其元素。元组是不可变列表,而冻结集是不可变集。

可变的集合不可散列,因此不能用作字典键。另一方面,frozenset是可哈希化的,可用作字典的键。

此数据类型支持的方法,如copy(),difference(),intersection(),isdisjoint(),issubset(),issuperset(),symmetric_difference()和union()。由于不可变,因此没有添加或删除元素的方法。

示例# 初始化 A 和 B

A = frozenset([1, 2, 3, 4])

B = frozenset([3, 4, 5, 6])

在Python shell上尝试这些示例。>>> A.isdisjoint(B)

False

>>> A.difference(B)

frozenset({1, 2})

>>> A | B

frozenset({1, 2, 3, 4, 5, 6})

>>> A.add(3)

...

AttributeError: 'frozenset' object has no attribute 'add'

集合添加元素python_Python 集合(Set)相关推荐

  1. 集合添加元素python_Python 集合(set)添加元素-Python 集合(set) add-Python 集合(set) update-嗨客网...

    Python集合(set)添加元素教程 add 方法将需要添加的元素当做一个整体,添加到集合中去,而 update 方法是把要传入的元素拆分,做为个体传入到集合中. add添加集合元素语法详解 语法 ...

  2. 集合添加元素python_Python基础:列表、字典、元组、集合、添加和删除元素,增删...

    列表(有序) 添加 list.append(元素):在列表末尾添加新的元素 list.extend(seq):在列表末尾一次性追加另一个序列中的多个值 –seq可以是列表.元组.字典,若为字典,则仅会 ...

  3. 集合遍历python_Python 集合遍历

    1.set集合 可变集合(set):可添加和删除元素,非可哈希的,不能用作字典的键,也不能做其他集合的元素 不可变集合(frozenset):与上面恰恰相反 Paste_Image.png 创建集合 ...

  4. 【Flutter】Dart 数据类型 List 集合类型 ( 定义集合 | 初始化 | 泛型用法 | 初始化后添加元素 | 集合生成函数 | 集合遍历 )

    文章目录 I . 定义集合并初始化 II . 集合泛型用法 III . 集合添加元素 IV . 集合生成函数 V . 集合遍历 VI . 集合示例代码 I . 定义集合并初始化 定义并初始化 List ...

  5. Python 集合添加元素

    Python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...

  6. 集合python_python集合访问的方法

    python集合如何访问 python集合如何访问?由于set存储的是无序集合,所以我们没法通过索引来访问.访问 set中的某个元素实际上就是判断一个元素是否在set中. 例如,存储了班里同学名字的s ...

  7. java 集合 接口_Java集合之Collection接口

    1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...

  8. Java集合学习_Java集合学习(适合新手)

    集合框架 由⼀组类和接⼝组成的⼀个体系. Collection 集合框架 最基本的接⼝,⼀个 Collection 可以存储⼀组⽆序.不唯⼀的对象,实际开发中不会直接使⽤ Collection 进⾏开 ...

  9. 【Flutter】Dart 数据类型 Map 类型 ( 创建 Map 集合 | 初始化 Map 集合 | 遍历 Map 集合 )

    文章目录 一. Dart 数据类型 Map 类型 二. Map 类型初始化并赋值 1. 创建 Map 对象同时进行初始化操作 2. 先创建 Map 对象再进行赋值 三. Map 集合遍历 1. 使用 ...

最新文章

  1. js indexof用法indexOf()定义和用法
  2. java中的dispose()方法
  3. .NET Core 3.0特性初探:C# 8、WPF、Windows Forms、EF Core
  4. 推荐特征筛选偷懒神器-M3USelector
  5. [JSP暑假实训] 三.MySQL数据库基本操作及Servlet网站连接显示数据库信息
  6. JS中URL编码解码
  7. 转 Python爬虫入门一之综述
  8. php 重复写入数据,完美解决Thinkphp3.2中插入相同数据的问题
  9. 201771010102 常惠琢《面向对象程序设计(java)》第八周学习总结
  10. win7如何安装mysql5.7_Win7下安装MySQL5.7备忘
  11. JMeter集合点功能的使用
  12. java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据
  13. VS2010的详细安装
  14. Navicat 注册机破解问题
  15. html语言隔开的代码,2、HTML(示例代码)
  16. 2年CFA三级考试连过的我,全靠笔记多!(无金融背景)
  17. 天猫整站(简易版)SSM(十四)需要登录才能使用的功能
  18. 两台计算机如何连接一个网络打印机共享,打印机怎么连接2台电脑?两台或多台电脑连接共享打印机操作方法...
  19. 1 12c语言,1.4.1 Oracle数据库12c中PL/SQL的新特性
  20. Spring Boot的优点

热门文章

  1. 京东商城上市带来的利与益
  2. MySQL 企业监控器 2.3.10 正式版发布
  3. 项目管理杂谈-员工的积极性在哪里?
  4. PLSQL 安装+配置( Oracle数据库连接工具 )
  5. 【English】六、am,is,are 分别用在什么地方
  6. 常见cmd命令,开发人员必备
  7. HDU 6071 Lazy Running
  8. git push/pull时总需要输入用户名密码的解决方案
  9. 关于禁止svn客户端长驻内存的方法
  10. 李洋疯狂C语言之用递归解决李白喝酒问题(附填空题解法)