在数学中,有集合(或集合论)这样的东西。也许你甚至在数学课程中学习过它们。您甚至可能熟悉维恩图。
在实践中,一个集合可以被简单地认为是一组定义良好的单个对象,称为元素或成员。
将对象分组为一个集合在编程中很有用,Python 为我们提供了内置类型 set

集合(类型 集合)与其他类型的对象的不同之处在于可以对它们执行的独特操作。

Python 中的内置类型set 具有以下特点:
    集合的
  • 元素是无序的(这意味着如果两个集合包含相同的元素,则它们是等价的)。集合的元素不是按顺序存储的,而是按照一定的算法存储的,可以让你快速判断一个元素是否属于一个集合(无需枚举所有元素);
  • 集合元素是唯一的。不允许重复元素;
  • 集合是可变的(例如,您可以向集合中添加一个元素),但集合中的元素本身必须是不可变的(数字、字符串、元组)。您不能使列表或另一个集合成为集合的元素;

 

创建 集合
1 种方式

简单的枚举 在花括号中的集合中的元素。

x = {“学校”,“老师”,“班级”,学生
 

2路 
使用内置函数 set() x = set()    #空集 list_name = [“Andry”,“Bob”,“Caroline”] y = set(list_name)    #你可以创建多个                        # 来自任何可迭代对象 z = set(["Andry", "Bob", "Caroline"])     # {“鲍勃”、“卡罗琳”、“安德里”} k = set(("Andry", "Bob", "Caroline"))     # {“鲍勃”、“卡罗琳”、“安德里”} s = "字符串 s" m = 集合 (s)    # {'我', 't', 'g', 'r', 'n', & #39;是的,' '} -                # 注意!                # 元素的顺序可以是任意的,               # 元素不重复 n = {42, 'foo', 3.14159, 无, (1, 2, 3)}    # 元素在                                                #可以是不同的类型  
设置输出
集合中的元素以任意顺序显示,不一定按添加顺序显示。 z = set([“Andry”, “Bob”, “Caroline”])  打印(z)     # {“鲍勃”、“卡罗琳”、“安德里”} 打印(*z)    # 鲍勃安德里卡罗琳

使用集合的方法


集合中的元素个数
len() 方法返回集合中元素的数量。 k = {42, 'foo', 3.14159, 无, (1, 2, 3)}  打印(len(k))    #5

 

确定 元素是否在集合中(成员资格 in
k = {42, 'foo', 3.14159, 无, (1, 2, 3)}  打印(k 中的 42)   #真 打印(k 中的 2)    # 错误
尽管集合中包含的元素必须是不可变类型,但集合本身是可以更改的。 

 

添加一个元素到 set
x.add()
向集合  x 添加 ,它必须是唯一的不可变对象。

 

从集合中删除一个元素
1) x.remove()
 x 集合中移除。如果 <elem> 不在 x 中,Python 将抛出异常(错误)。

2) x.discard()
同样的删除操作,但如果集合中不存在元素,则不会引发异常。

3) x.pop()
从集合中删除并返回一个随机元素。如果集合最初为空,则发生异常(错误)。

4) x.clear()
从集合中删除所有元素(清除集合)。

Error

设置排序?

正如我们所知,不考虑集合中元素的顺序。那么谈论 Python 3 中的排序集合有意义吗?! (这就是为什么标题中有一个问号)

为了快速找到集合中的元素,最好将它们以有序的形式存储在内存中。

让我们看一些例子。同一集合中不同数据类型的元素会发生什么情况? 这样的元素不应该被排序。如果我们使用 print() 命令打印元素,它们将像这样输出:

a = {0, 1, 12, 'b', 'ab', 3, 2, 'a'} print(a) # {0, 1, 2, 3, 'a', 12, 'b', 'ab'} 在这种情况下,显示未排序的值。如果重复启动,则输出顺序可能不同。但这只是在混合不同类型的元素时。

让我们尝试显示一种类型的数据(例如,只有数字): 一 = {0, 1, 12, 3, 2} 打印(a) # {0, 1, 2, 3, 12} 所有元素都按顺序显示。让我们尝试将其转换为列表: 一 = {0, 1, 12, 3, 2} b = 列表(a) 打印(b) # [0, 1, 2, 3, 12] 同样,将按升序排列的元素写入列表。

事实证明,如果元素类型相同,则它们以有序的形式存储在内存中。但最好不要指望它,Python 算法会改变。

如果你需要从集合中得到一个排序列表,最好使用sort (< code>sorted) 函数以确保 )。元素将被精确排序。您的代码将被其他人理解。