day09-集合

集合(Set)是一种可变、无序的数据类型,集合中的元素是唯一的,不重复的
诶?我们之前讲过的字典也是同样的可变,无序的数据类型,但是字典是键值对的存储形式,而集合不是

1、初识集合

集合使用大括号 {} 包裹着,元素之间使用逗号 分隔,集合中的元素可以是字符串、数字、元祖等其他任何不可变数据类型。
# 字典例子
set = {1, 2, '3', (1, 2)}

print(set)

 

集合里的元素不能放可变数据类型,必须是不可变的数据元素

2、创建集合

使用{ }创建

set = {1, 2, 3, 4, 5}
print(set)

# 输出结果
{1, 2, 3, 4, 5}

 

直接使用花括号创建的字典,那突然有个问题,创建空集合使用{}可以用吗?
set2 = {}
print(set2,type(set2))

# 输出结果
{} <class 'dict'>

 

结果是字典类型,说明使用{ }创建的是空字典
 
 

使用set() 函数

set() 是一个内置函数,用于创建一个集合。set() 函数可以接受一个可迭代对象作为参数,并将其转换为一个集合。如果没有提供参数,则返回一个空集合。
可迭代对象有字符串,列表,元祖,字典,集合
1、创建空集合
my_set = set()
print(my_set, type(my_set))

# 输出结果
set() <class 'set'>

 

2、集合里放字符串
my_set = set('hello')
print(my_set, type(my_set))

# 输出结果
{'l', 'o', 'h', 'e'} <class 'set'>

 

3、集合里放列表
my_set = set([1, 2, 3, 4])
print(my_set, type(my_set))

# 输出结果
{1, 2, 3, 4} <class 'set'>

 

4、集合里放元祖
my_set = set((1, 2, 3, 4))
print(my_set, type(my_set))

# 输出结果
{1, 2, 3, 4} <class 'set'>

 

5、集合里放字典
my_set = set({"1": 1, "2": 2, "3": 3})
print(my_set, type(my_set))

# 输出结果
{'3', '2', '1'} <class 'set'>

 

集合里元素是不可变元素,上述是使用set()函数可以把列表和字典转换为集合元素,而因为字典中键是不可变的,所以使用set函数放入字典,只会转换字典的键

3、集合特性

集合最大的特性是元素是唯一的,不允许重复

唯一性

举例说明:
my_set = {1, 2, 3, 2, 3, 5}
print(my_set)
猜猜打印结果是什么
输出结果:{1, 2, 3, 5}
集合不允许有重复元素,后边可以帮助我们去重
 

无序性

表示我们无法通过索引取值my_set[0] 会报错
 

列表和集合的区别

1、列表是[ ],集合是{ }
2、列表是有序的,可索引取值,集合是无序的,不可索引取值
3、列表可以放重复的元素,集合元素是唯一的,不会重复

4、集合增删改查

  • 使用 add() 方法添加单个元素到集合中。
  • 使用 update() 方法添加多个元素到集合中。
my_set = {1, 2, 3}
my_set.add(4)  # 添加单个元素
my_set.update({5, 6})  # 添加多个元素
print(my_set)  # 输出:{1, 2, 3, 4, 5, 6}

  • 使用 remove() 方法删除指定的元素。如果元素不存在,会引发 KeyError 错误
  • 使用 discard() 方法删除指定的元素。如果元素不存在,不会引发错误
  • 使用 pop() 方法删除并返回集合中的任意一个元素
my_set = {1, 2, 3, 4, 5, 6}
my_set.remove(4)  # 删除指定元素
my_set.discard(5)  # 删除指定元素
print(my_set)  # 输出:{1, 2, 3, 6}

popped_element = my_set.pop()  # 删除并返回任意一个元素
print(popped_element)  # 输出:1
clear() 也可以清空集合

集合中的元素是不可变的,所以不能进行修改

同样,集合无序的,所以也无法查询
不过我们可以通过in方法键字可以判断一个元素是否存在于集合中,如果有返回true,否则返回False
my_set = {1, 2, 3, 4, 5}
print(3 in my_set)  # 输出:True
print(6 in my_set)  # 输出:False

5、集合常见方法

len(set)

my_set = {1, 2, 3, 4, 5}

print(len(my_set))  # 5

 

max(set)

my_set = {1, 2, 3, 4, 5}

print(max(my_set))  # 5

 

min(set)

my_set = {1, 2, 3, 4, 5}

print(min(my_set))  # 1

 

如果集合中有不可比较的元素,会提示报错

6、集合的交集,并集,差集

union()

返回两个集合的并集。合并并去重
# union
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.union(set2))

# 输出结果
{1, 2, 3, 4, 5}

 

intersection()

返回两个集合的交集,共同的元素
intersectionset1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.intersection(set2))
# 输出结果{3}

 

difference()

从源集合中找出目标集合中没有的元素集合
a= {1, 2, 3, 4}
b = {2, 3, 5}
print(a.difference(b))
# 输出结果{1, 4}
 

day09练习

初级
1.创建一个空集合
2.声明一个集合computer,包含如下元素computer = {"apple", "xiaomi", "huawei"}
3.计算2题中集合的长度并且打印输出
4.添加"vivo"到集合computer中
5.一次添加"oppo","meizu"到集合computer中
6.使用两种方法在集合computer移除一家公司,remove()discard(),两者之间有什么不同?
 
中级
有a集合和b集合,信息如下:
string1 = "hello"
string2 = "world"
1.连接a集合和b集合,并输出新集合
2.找出a集合和b集合的交集
3.找出a集合在b集合中没有的集合元素
 
 
高级
1.有如下两个字符串,找出如下字符串中共同包含的字符,输出打印
string1 = "hello"
string2 = "world"

 

2.有如下字符串,找出该字符串唯一的单词集合,并且输出唯一的单词列表
string = 'I am astring and I am anotherstring and I am the laststring'

 

3.有如下列表,找好该列表中每个元素及其出现的次数。(可学完循环和判断在做该题)
List = [1, 2, 2, 3, 3, 3, 4, 5]
 
要求:以字典的形式输出,比如输出:{1: 3, 2: 1, 3: 2}
 
 
 
 
 
 
 
posted @ 2024-01-22 18:15  似小陈ya  阅读(18)  评论(0编辑  收藏  举报