在 Python 的众多数据结构中,集合(Sets)是一个引人注目且实用的概念。集合提供了一种存储无顺序、唯一元素的数据结构,它们不仅可以帮助我们高效处理数据,还能应用于各种算法和问题。
本博客将带您踏上一段关于 Python 集合的探索之旅。我们将深入了解集合的基本概念、使用方法和相关操作,了解集合与其他数据结构的比较优势,以及如何利用集合来解决实际问题。
准备好开始探索 Python 集合的奇妙世界了吗?让我们一起深入了解集合的魅力,开启这段令人兴奋的学习之旅吧!
在Python中,集合是一个独特的元素集合。换句话说,集合是无序的,元素们彼此之间不重复的容器。当需要存储多个项目,但不关心顺序或重复时,通常可以使用集合。Python集合可以包含不同类型(整数,浮点数,元组,字符串等)的不可变类型数据,也就是说集合中不能包含列表,因为列表是可变类型。
这是因为,为了保证元素的唯一性,集合(set)内部对元素的实现依赖于散列(hash)技术。散列技术要求元素必须是不可变的类型才能确保散列值不变,因此保持集合的正确运行。列表由于是可变类型,所以不能哈希化,也就不能被加入到集合中。
集合在Python中定义为在大括号{}内放置一个逗号分隔的列表。也可以通过调用内置的 “set()” 函数从一些其他集合类型比如列表,元组构建出一个集合。
set1 = {1,13.14,'zhangsan',(3,4,5)}
print(type(set1))
print(set1)
set2 = set('zhangsan')
print(type(set2))
print(set2)
这里我们可以发现,输出集合的顺序跟我们定义集合的时候的顺序是不同的,这也体现了集合的无序性。同时因为集合的无序性,集合不支持下标操作。
set1 = {1,13.14,'zhangsan',(3,4,5)}
print(set1[0])
但是当我们需要创建一个空集合的时候,我们不能 set1 = {}
,因为这种方式是我们用来创建空字典的方式。如果我们想要创建空字典,需使用 set1 = set()
函数。
set1 = {}
print(type(set1))
set2 = set()
print(type(set2))
print(set2)
set1 = {1,2,10,10,20,20}
print(set1)
集合的特性
️ 1.add()
add函数可以增加单个数据,也可以增加序列。
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.add(80)
print(set1)
set1.add(('wangwu','zhaoliu'))
print(set1)
2.update()
update 增加数据只能增加序列,而不能增加单个数据。
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.update(1)
print(set1)
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.update((20,60))
print(set1)
update与add函数不同的是,add函数可以增加单个数据以及序列,而update函数只允许增加序列,并且add增加序列会将整个序列当成一个数据,而update增加序列,会将序列里的数据拆分成单个数据加入集合中。
1.remove()
remove函数删除指定的数据,但是如果集合中不含该数据,那么就会报错。
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.remove('zhangsan')
print(set1)
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.remove('lisi')
2.discard()
discard删除指定的数据,如果集合中不存在也不会报错。
set1 = {1,13.14,'zhangsan',(3,4,5)}
set1.discard('zhangsan')
print(set1)
set1.discard('lisi')
3.pop()
pop随机删除集合中的数据,并且返回这个数据。
set1 = {1,13.14,'zhangsan',(3,4,5)}
tmp = set1.pop()
print(set1)
print(tmp)
in 查找数据是否在集合中,如果在则返回True,不存在返回Fasle。
not in 查找数据是否不在结合中,如果不存在返回True,存在返回False。
set1 = {1,13.14,'zhangsan',(3,4,5)}
print('zhangsan' in set1)
print('lisi' in set1)
print('zhangsan' not in set1)
print('lisi' not in set1)