1.数据类型(集合) set
1.1 定义一个集合
value1={1,'xiaoming','校长 ',True} print(value1)#{1, 'xiaoming', '校长 '} ''' 1. 集合是一个无须的数数据类型,他不能通过索引值来获取 2.集合是一个可变类型 ,可以修改内部元素 3.集合不允许内部元素重复 ''' |
一般什么时候用到集合呢?
就是要维护一大堆不重复的数据就可以用到集合
注意 定义空集合是 只能通过v1=set()来定义 不可以通过v1={} 这个定义的是一个空集合
1.2 集合的独有功能
、
1.
val={'张春华 ','武大郎 ','潘金莲 '} val.add('刘伯温 ') print(val)#{'张春华 ','武大郎 ','潘金莲 ','刘伯温 '} ''' 在Python中,add和append是两种不同的方法,它们用于向列表(list)中添加元素。 append:这是Python中用于向列表的末尾添加一个新元素的方法。这个方法会直接将元素添加到列表的末 尾。例如: python list = [1, 2, 3] list.append(4) print(list) # 输出: [1, 2, 3, 4] add:这是Python中用于向集合(set)添加一个新元素的方法。如果尝试使用add方法向列表添加元素, Python会抛出一个错误。这是因为add方法是集合(set)类的一个方法,而不是列表(list)类的方法。例 如: python set = {1, 2, 3} set.add(4) print(set) # 输出:{1, 2, 3, 4} 如果你是在讨论 set.add(element) 和 list.append(element) 的话,那么你应该知道它们分别用于 添加元素到集合和列表。集合是无序的,不包含重复元素的集合,而列表是有序的,可以包含重复元素的序列。 因此,add用于集 ''' |
2.删除元素
value1={1,'xiaoming','校长 ',True} value1.discard('校长 ') print(value1)#1,’xiaoming‘ ture |
3.交集,并集,差集
#集合(Set):Python 的集合数据结构提供了交、并、差等操作。例如: set1 = {1, 2, 3} set2 = {2, 3, 4} # 交集 intersection = set1 & set2 print(intersection) # 输出: {2, 3} # 并集 union = set1 | set2 print(union) # 输出: {1, 2, 3, 4} # 差集(set1 - set2) difference = set1 - set2 print(difference) # 输出: {1} |
1.3 类型转换
其他类型转换成集合类型,可以通过set进行转换,并且如果数据有重复会自动剔除重复的部分
提示 str/int /list/tuple/dict类型可以转换成集合
v1='吴佩琦 ' v2=set(v1) print(v2)#{'吴 ', '佩 ', '琦 '} import random my_list = [ random.randint(1,10) for item in range(10)] print(my_list) my_set=set(my_list) print(my_set)# #[2, 5, 5, 4, 8, 1, 1, 4, 9, 8] #{1, 2, 4, 5, 8, 9} |
1.4 集合的存储原理
<!--Python中的集合(set)是一种无序的、不重复的数据结构。Python集合的实现原理主要基于哈希表 (hash table)。哈希表是一种通过哈希函数将键(key)映射到桶(bucket)中,实现快速插入、查找 和删除操作的数据结构。
在Python集合中,每个元素都是一个唯一的键。当你向集合中添加一个元素时, Python会计算该元素的 哈希值,并将其放入对应的桶中。由于哈希函数的特点,相同的元素会计算出相同的哈希值,因此它们 会被放在同一个桶中。这就是为什么集合中的元素不能重复的原因。
集合的存储和查找操作的平均时间复杂度为O(1),因为哈希表可以在常数时间内定位到指定的桶。这也 使得集合成为一种高效的数据结构,适用于需要快速查找和判断元素是否存在的场景。
需要注意的是,由于哈希表需要占用一定的内存空间来存储桶和哈希函数等信息,因此集合在空间上的 开销会比列表和元组等数据结构要大一些。同时,哈希表的实现也涉及到一些复杂的算法和数据结构知 识,因此在使用集合时需要注意其特点和适用场景。 -->
应为集合采用了哈希存储 所以集合的查找的时间复杂度是 O(1)