-
集合间的关系
对于集合的常规操作,增、删、改等都已经讲述完毕,下面我们来看一下集合之间的关系。首先,我们需要判断两个集合是否相等。我们可以使用运算符“==”或“!=”进行判断。我们来新建一个Python文件,命名为“daimao.py”,在第一个集合中加入“10,20,30,40”,在第二个集合中加入“30,40,20,10”和“10”。然后我们看一下这两个集合是否相等,我们使用“print(s == s2)”和“print(s != s2)”进行判断。我们发现,它输出的结果为“True”和“False”。为什么呢?虽然我们在写入集合的时候,第一个集合中的元素的顺序是“10,20,30,40”,而第二个集合中的元素的顺序是“30,40,20,10”和“10”,但是我们知道,集合中的元素是无序的,它们的存储顺序并不是按照我们输入的顺序来决定的,而只要元素的内容相同,它们底层的存储顺序也都是相同的。这就是判断两个集合是否相等的方法。
接下来,我们来看第二种关系,即一个集合是否是另一个集合的子集。我们来看一个集合“a”和一个集合“b”,如果集合“b”中的所有内容都存在于集合“a”中,那么我们就说集合“b”是集合“a”的子集。这是两个集合之间的第二种关系。我们可以在集合“s1”中加入元素“12,13,14,15,10,60”,在集合“s2”中加入元素“12,10,30,40”,在集合“s3”中加入元素“10,20,30”,然后我们使用“print(s2.issubset(s1))”和“print(s3.issubset(s1))”来判断哪个集合是另一个集合的子集。我们发现,它输出的结果是“True”和“False”。为什么呢?因为集合“s2”中的所有元素都存在于集合“s1”中,所以“s2”是“s1”的子集;而集合“s3”中的元素“90”在集合“s1”中不存在,所以它不是“s1”的子集。
第三种关系是一个集合是否是另一个集合的超集。如果一个集合“b”是另一个集合“a”的子集,那么我们可以说集合“a”是集合“b”的超集。我们只需要反过来就可以得到结论。我们可以在集合“s1”中加入元素“12,13,14,15,10,60”,在集合“s2”中加入元素“12,10,30,40”,然后我们使用“print(s1.issuperset(s2))”来判断哪个集合是另一个集合的超集。结果告诉我们“s1”是“s2”的超集。
最后,我们来看第四种关系,即两个集合是否有交集的问题。我们可以使用方法“isdisjoint()”进行判断。我们来看集合“s2”和集合“s3”,我们使用“print(s2.isdisjoint(s3))”来判断它们是否有交集。输出的结果是“False”,说明它们有交集。我们再来添加一个集合“s4”,其中包含元素“100,200,300”,然后我们使用“print(s2.isdisjoint(s4))”来判断它们是否有交集。输出的结果是“True”,说明它们没有交集。这就是集合与集合之间的关系。
总结一下,我们讲述了集合常规操作的增、删、改等操作,以及集合之间的四种关系:两个集合是否相等、一个集合是否是另一个集合的子集、一个集合是否是另一个集合的超集、两个集合是否有交集。希望这些知识能对大家有所帮助。
-
集合的数据操作
在本文中,我们将深入探讨Python中的集合操作,这些操作与数学中的集合有着紧密的联系。集合操作是处理数据的有用工具,可以帮助我们找到共同的元素、组合不同的元素,并去除重复的元素。在Python中,我们可以使用集合方法或运算符来执行这些操作。
交集是查找两个集合中共同元素的操作,而并集是将两个集合中的元素组合在一起并去除重复元素。差集是从第一个集合中去除包含在第二个集合中的元素,而对称叉集是找到不同的元素,并将它们组合在一起。
为了更好地理解这些操作,我们将使用以下两个集合作为示例:
S1 = {1, 2, 1, 3, 1, 4, 0}
S2 = {2, 0, 3, 0, 4, 5, 6, 0}
首先,让我们看看如何找到这两个集合的交集。我们可以使用 intersection() 方法,也可以使用运算符 &。在本例中,使用方法和运算符都可以得到相同的结果:
# 使用方法
S1.intersection(S2)
# 输出 {0, 2, 3, 4}
# 使用运算符
S1 & S2
# 输出 {0, 2, 3, 4}
接下来,让我们看看如何找到这两个集合的并集。我们可以使用 union() 方法,也可以使用运算符 |。同样,在本例中,使用方法和运算符都可以得到相同的结果:
# 使用方法
S1.union(S2)
# 输出 {0, 1, 2, 3, 4, 5, 6}
# 使用运算符
S1 | S2
# 输出 {0, 1, 2, 3, 4, 5, 6}
现在,让我们尝试找到这两个集合的差集。我们可以使用 difference() 方法,也可以使用运算符 -。在本例中,使用方法和运算符都可以得到相同的结果:
# 使用方法
S1.difference(S2)
# 输出 {1}
# 使用运算符
S1 - S2
# 输出 {1}
最后,让我们看看如何找到这两个集合的对称叉集。我们可以使用 symmetric_difference() 方法,也可以使用运算符 ^。同样,在本例中,使用方法和运算符都可以得到相同的结果:
# 使用方法
S1.symmetric_difference(S2)
# 输出 {0, 1, 5, 6}
# 使用运算符
S1 ^ S2
# 输出 {0, 1, 5, 6}
需要注意的是,这些操作不会改变原始集合的内容。这意味着在执行这些操作之后,原始集合仍然保持不变。例如,让我们执行以下操作:
# 执行交集操作
S3 = S1.intersection(S2)
# 输出结果
print(S3)
# 输出 {0, 2, 3, 4}
# 输出原始集合
print(S1)
# 输出 {0, 1, 2, 3, 4}
print(S2)
# 输出 {0, 2, 3, 4, 5, 6}
可以看到,执行交集操作后,原始集合 S1 和 S2 的内容并没有改变。
在Python中使用集合操作可以极大地简化数据处理过程。如果您需要使用这些操作,您可以根据实际情况选择适合自己的方法或运算符。最后,让我们总结一下这些操作:
交集:使用 intersection() 方法或运算符 &。
并集:使用 union() 方法或运算符 |。
差集:使用 difference() 方法或运算符 。
对称叉集:使用 symmetric_difference() 方法或运算符 ^。
希望这篇文章对您有所帮助!
-
集合生成式
本章最后我们向大家介绍了集合生成式。集合生成式是用于生成集合的公式。实际上这个概念大家并不陌生,我们在讲列表和字典时都曾提到过对应的生成式。但是原组是不可变序列,所以不存在原组生成式。集合生成式非常简单,只需要把列表生成式中的方括号改为花括号即可。
我们以一个具体的例子来演示集合生成式。我们先新建demo9,然后写一个列表生成式。列表生成式以方括号为标识符,使用for循环,产生0-5之间的整数i,然后将i乘以自身,即i的二次方,存储在列表Iis中。最后输出Iis,得到的结果是:01491625。将列表生成式中的方括号改为花括号,再用变量s存储生成的集合,最后输出s,即得到一个集合。
集合是一种可变序列,因此可以执行增删改等操作。不同于列表,集合的元素是不可重复的,而且是无序的。因此当数据变大时,集合生成式的顺序会变得混乱。集合使用花括号进行定义。
列表、原组、集合和字典是四种常用的数据结构。列表是可变序列,可以执行增删改操作。列表中的元素可以重复,而且添加元素的顺序和遍历元素的顺序相同,因此列表是有序的。列表使用方括号进行定义。原组是不可变序列,只能遍历其中的元素,不能进行修改和添加,但元素可以重复,而且原组中元素的遍历顺序和元素本身的顺序相同,因此原组也是有序的。原组使用小括号进行定义。
集合是可变序列,可以执行增删改等操作。集合的元素不可重复,而且是无序的,因此集合的遍历顺序是随机的。集合使用花括号进行定义,也可以使用集合生成式进行创建。字典也是可变序列,它的键是不可重复的,因此字典是无序的。字典使用花括号进行定义,使用键值对的形式存储数据。
本章主要讲解了原组和集合两个主题。原组可以使用小括号或内置函数进行创建,只能遍历其中的元素,不能进行修改和添加。集合可以使用花括号、内置函数或集合生成式进行创建,可以执行增删改等操作。集合是可变序列,元素不可重复,而且是无序的。在实际的项目中,我们会根据需要选择适合的数据结构。
本文介绍了Python中集合的操作,包括判断集合相等性、子集、超集关系,以及交集、并集、差集和对称叉集的运算。同时,提到了集合生成式,它是创建集合的一种方式,类似列表生成式,但使用花括号表示。集合是无序且不包含重复元素的数据结构,在数据处理中起到重要作用。
71万+

被折叠的 条评论
为什么被折叠?



