数据结构--集合(set)

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中,addappend是两种不同的方法,它们用于向列表(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)#1xiaomingture

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)

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值