Python中的集合是什么以及如何使用它们?

举报
Yuchuan 发表于 2021/03/05 20:00:27 2021/03/05
【摘要】 Python中的集合使用详解

数据存储是当今世界每个域所必需的。Python提供了不同类型的数据结构来组织数据,这些数据结构是Python认证培训的重要组成部分。在Python中可用的所有数据结构中,有些是可变的,有些是不可变的。在本文中,我将讨论其中一种。Python中的集合是可变,可迭代和无序的数据结构。这里是所有后续内容的快速演练。

What is Set in Python?
When to use sets in Python? 
How do you create a set?
Set Operations

What are Frozen Sets?

Python中的设置是什么?

集合基本上是由无序元素的集合组成的数据类型。这些元素可以是任何数据类型,因为与数组不同,集合不是特定于类型的。集是可变的(可变的),并且没有元素的重复副本。集合的值未索引,因此无法对集合执行索引操作。

例子:

My_Set={1,'s',7.8}
print(My_Set)

输出:  {'s',1,7.8}

输出显示存在的所有元素My_Set。

注意:整个集合是可变的,但是集合的元素不是可变的。

现在您知道了Python中的集合,让我们继续前进,了解何时使用集合。


什么时候在Python中使用集合?

在以下情况下使用Python中的集合-

  • 数据顺序无关紧要
  • 您不需要数据元素中的任何重复
  • 您需要执行数学运算,例如并集,交集等

现在,让我们继续前进,看看如何在Python中创建集合。

如何在Python中创建集合?

Python中的集合可以通过两种方式创建:

  • 将元素括在花括号内
  • 通过使用set()函数

1.使用花括号:

Python中的集合是使用花括号({})创建的。

例子:

My_Set={1,'s',7.8}
print(My_Set)

输出:    {'s',1,7.8}

如您所见,My_Set已创建。

2.使用set()函数

可以使用set()函数在Python中创建集合。

例子: 

a=set({1,'b',6.9})
print(a)

输出:  {1,'b',6.9}

您也可以使用相同的功能创建一个空集。

例子:

Empty_Set=set()
print(Empty_Set)

输出: set()

上面的输出显示已创建一个名为Empty_Set的空集。

您可以将元素添加到此空集中。我将在以下主题中对此进行介绍。

设定作业

可以对集合执行许多操作,例如添加元素,删除元素,查找集合的长度等。要知道可以在集合上使用什么方法,可以使用dir()函数。

例子:

My_Set={1,'s',7.8}
dir(My_Set)

输出: 

['__and __','__ class __','__ contains __','__ delattr __','__ dir __','__ doc __','__ eq __','__ format __','__ ge __','__ getattribute __','__ gt __','__ hash__',' __iand __','__ init __','__ init_subclass __','__ ior __','__ isub __','__ iter __','__ ixor __','__ le __','__ len __','__ lt __','__ ne __','__ new __','__ or__' ,'__ rand __','__ reduce __','__ reduce_ex __','__ repr __','__ ror __','__ rsub __','__ rxor __','__ setattr __','__ sizeof __','__ str __','__ sub __','__ subclasshook__',' __xor __','add','clear','copy','difference','difference_update','discard','intersection','intersection_update','isdisjoint','issubset','issuperset','pop' ,“删除”,“对称差异”,“对称差异更新”,“联合”,“更新”]

输出显示了可以在集合上使用的所有方法。我将在本文中进一步说明其中的一些。

查找集合的长度

要在Python中查找集合的长度,可以使用len()函数。此函数将集合的名称作为参数,并返回一个整数值,该整数值等于集合中存在的元素数。

例子:

My_Set={1,'s',7.8}
 
len(My_Set)

输出3

如您在上面的输出中看到的,已返回3,该数目等于My_Set中存在的元素数。现在,也可以访问这些元素,如下所示。

访问集合的元素

不能使用索引号访问Set元素,因为如前所述,不索引集合中的元素。因此,当您要访问集合的元素时,可以遍历它并访问其元素。

例子:

My_Set={1,'s',7.8}
for x in My_Set:
    print(x)

输出:

ş 
1 
7.8

如您在输出中看到的,顺序与提供给集合的元素的顺序不同。这是因为元素未排序。 

将元素添加到集合中:

可以使用两个函数add()update()函数元素添加到集合中。

add()函数将一个元素添加到现有集合中,如下所示:

例子:

My_Set={1,'s',7.8}
My_Set.add(3)
My_Set

输出: {1,3,7.8,'s'}

如果要向现有集合添加多个元素,则使用update()函数。

例子:

My_Set={1,'s',7.8}
My_Set.update([2,4.6,1,'r'])
My_Set

输出:  {1、2、4.6、7.8,'r','s'}

从上面的输出中可以看到,update()函数获取4个值的列表,除1外的所有值都添加到My_Set中。这是因为集合中已经存在1,因此无法再次添加。 

删除一组元素

要从集合中删除元素,可以使用remove(), discard()pop()函数。

remove()函数采用一个参数,该参数是要从集合中删除的项目。

例子:

My_Set={1, 2, 4.6, 7.8, 'r', 's'}
My_Set.remove(2)
print(My_Set)

输出: {1,4.6,7.8,'r','s'}

如您所见,已经使用remove()函数从集合中删除了2个。如果您指定某个元素作为set中不存在的remove()参数,它将引发错误。

现在,如果要从集合中删除某些元素,并且不确定该元素是否确实存在于集合中,则可以使用discard()函数。该函数将要从集合中删除的元素作为参数,但是如果该元素不存在,则不会引发错误。

例子:

My_Set={1, 2, 4.6, 7.8, 'r', 's'}
My_Set.discard(4.6)
My_Set.discard('i')
print(My_Set)

输出: {1,2,7.8,'r','s'}

上面的输出显示从My_Set中删除了4.6,但是当我使用My_Set.discard('i')时,即使我的集合中不存在“ i”,discard()也不会引发错误。

pop()函数还删除集合元素,但是由于集合是无序的,因此您将不知道哪个元素已被删除。

例子:

My_Set={1, 2, 4.6, 7.8, 'r', 's'}
My_Set.pop()
print(My_Set)

输出: {2,4.6,7.8,'r','s'}

输出显示,使用pop()删除了一些随机元素,在本例中为1。

现在,如果要删除集合中存在的所有元素,可以使用clear()方法。

例子:

My_Set={1, 2, 4.6, 7.8, 'r', 's'}
My_Set.clear()
print(My_Set)

输出: set()

如您在上面的输出中看到的,My_Set是一个空集。

如果要完全删除该集合,可以使用del关键字。

例子:

My_Set={1, 2, 4.6, 7.8, 'r', 's'}
del My_Set
print(My_Set)

当您运行上面的代码时,它将被抛出错误,因为My_Set被删除了。

您还可以对集合执行各种数学运算,例如并集,交集,差等,这将在下面讨论。

Union of Sets

集的并集是指通过将两个或两个以上的集合中存在的所有唯一元素相加,将两个或更多集合串联在一起。这可以通过两种方式完成:

  • 使用管道
  • 使用union()函数

使用管道符号:

可以使用|来连接两组。符号如下:

例子:

a={1, 2, 4.6, 7.8, 'r', 's'}
b={2,5,'d','abc'}
c=a|b
print(a|b)

输出: {1,2,4.6,5,7.8,'r','abc','s','d'}

如您所见,在上面的输出中,集合a和集合b的并集存储在新集合c中。您也可以使用|连接两个以上的集合。象征。

例子:

a={1, 2, 4.6, 7.8, 'r', 's'}
b={2,5,'d','abc'}
c={2,3,4,5}
d=a|b|c
print(d)

输出:

{1,2,3,4,4.6,5,7.8,'abc','d','r','s'}

使用union()方法:

要连接两个或更多集合,可以使用union()方法,如下所示:

例子:

a={1, 2, 4.6, 7.8, 'r', 's'}
b={2,5,'d','abc'}
c={'m',23,76,4.7}
print("Set a U b = ",a.union(b))
print("Set a U b U c = ",a.union(b,c))

输出:

设置U b = {1,2,4.6,5,7.8,'r','abc','s','d'}

设置一个U b U c = {1,2,4.6,5,4.7,7.8,'r',76,23,'abc','m','s','d'}

上面的输出显示d是集合a,b和c的并集。

 集的交集

两个或更多集合的交集是一个新集合,仅由这些集合中存在的公共元素组成。

这可以通过两种方式完成:

  • 使用“&”符号
  • 使用交集()函数

使用“&”符号:

您可以使用“&”符号确定两个或多个集合的交集,如下所示:

例子:

a={1, 2,5, 4.6, 7.8, 'r', 's'}
b={2,5,'d','abc'}
c={2,3,4,}
print(a&b)
print(a&b&c)

输出:

{2, 5}
{2}

上面的输出显示了集合a,b和c的并集。

使用intersection()函数:

您可以使用intersection()函数确定两个或更多集合的交集,如下所示:

例子:

a={1, 2,5, 4.6, 7.8, 'r', 's'}
b={2,5,'d','abc'}
c={2,3,4}
print("Set a intersection b = ",a.intersection(b))
print("Set a intersection b intersection c = ",a.intersection(b,c))

输出:

设置交集b = {2,5}

设置交集b交集c = {2}

上面的输出显示了集合a,b和c的交集。

集的区别:

集合的差异产生了一个新集合,该集合由仅存在于那些集合之一中的元素组成。这意味着将返回除那些集合的公共元素以外的所有元素。

这可以通过两种方式完成:

  • 使用“-”符号
  • 使用difference()函数

使用“-”符号:

要使用“-”符号找出两组的差异,可以执行以下操作:

例子:

a={1, 2,5, 4.6, 7.8, 'r', 's'}
b={2,5,'d','abc'}
c={2,3,4}
print(a-b-c)

输出: {1,4.6,7.8,'r','s'}

输出包含集合'a'的所有元素,但'b'和'c'中存在的那些元素除外。

使用difference()函数:

可以使用内置的difference()函数来确定集合的差异,如下所示:

例子:

a={1, 2,5, 4.6, 7.8, 'r', 's'}
b={2,5,'d','abc'}
c={2,3,4}
print("Set a - b = ",a.difference(b))
print("Set a - b - c = ",a.difference(b,c))

输出:

设置a – b = {1,4.6,7.8,'r','s'}

设置a – b – c = {1,4.6,7.8,'r','s'}

上面的输出是使用difference()函数进行差分的结果。

现在,如果您根本不想更改集合的元素,可以使用冻结集合,下面将对此进行讨论

What are Frozen Sets

Python中的冻结集是无法修改其值的集。这意味着它是不可变的,这与我之前讨论过的普通集合不同。冻结集帮助用作字典键值对中的键。

How to Create Frozen Sets

可以使用Frozenset()方法获得冻结集。此函数接受所有可迭代的项,并将其转换为不可变的。

例子:

a={1, 2,5, 4.6, 7.8, 'r', 's'}
b=frozenset(a)
print(b)

输出: Frozenset({1、2、4.6、5、7.8,'r','s'})

上面的输出由集合b组成,集合b是集合a的冻结版本。

Accessing Frozen Set elements

可以通过循环访问冻结集的元素,如下所示:

例子:

b=frozenset([1, 2, 4.6, 5, 7.8, 'r', 's'])
for x in b:
print(x)

输出:

1
2
4.6
5
7.8

上面的输出显示,使用for循环,冻结集合b的所有元素都一个接一个地返回。
冻结集是不可变的,因此,您无法执行诸如add(),remove(),update()等操作。

希望您对本教程中与您共享的所有内容一清二楚。这使我们结束了有关“ Python中的集合”的文章的结尾。 确保尽可能多地练习并恢复经验。 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。