目录
一、集合的性质
二、集合常用的方法(元素的添加、删除和清空)
1、添加元素
2、删除元素
3、清空可变集合元素
三、集合类型的操作符
1、联合操作符(|)
2、交集操作符(&)
3、差补操作符(-)
4、对称差分操作符(^)
多学一招
四、例题解析
1、无序、可变的容器对象,所有元素放在一对大括号中,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,不允许重复
2、只能包含数字、字符串、元组等不可变类型的数据,不能包含列表、字典、集合等可变类型的数据,包含列表等可变类型数据的元组也不能作为集合的元素
3、其中元素是无序的,元素存储顺序和添加顺序并不一致,集合不支持使用下标直接访问特定位置上的元素,也不支持使用rendom中的choice()函数从集合中随机选取元素,但支持使用random模块中的sample()函数随机选取部分元素
(1)可变集合的add() 或update()方法都可以实现向集合中添加元素
(2)add()方法:用来增加新元素,如果元素已存在则忽略该操作,不会抛出异常,且只能添加一个元素
(3)update()方法:用于合并另外一个集合中的元素到当前集合中,并自动去除重复元素,且可以添加多个元素
(4)代码例子1
demo_set = set()
demo_set.add('py')
demo_set.update("thon")
print(demo_set)
(5)代码例子2
data = {30,40,50}
data.add(20) #增加新元素20
data.add(50) #集合中已包含50,忽略本次操作
data.update({40,60}) #忽略40,增加新元素60
print(data)
(1)remove()方法:用于删除可变集合中的指定元素,如果指定元素不存在则抛出异常
remove_set = {'red', 'green', 'black'}
remove_set.remove('red')
print(remove_set)
(2)discard()方法:可以删除指定的元素,但若指定的元素不存在,该方法不执行任何操作
discard_set = {'python', 'php', 'java'}
discard_set.discard('java')
discard_set.discard('ios')
print(discard_set)
(3)pop()方法:用于删除并返回可变集合中的随机一个元素,如果集合为空则抛出异常
pop_set = {'green', 'blue', 'white'}
pop_set.pop() # 随机删除
print(pop_set)
(4)代码例子
data = {30,40,50}
data.remove(30) #删除元素30
data.discard(30) #集合中没有30,忽略本次操作
print(data.pop()) #删除并返回集合中的一个元素
print(data)
clear()方法:可以清空可变集合中的元素
clear_set = {'red', 'green', 'black'}
clear_set.clear()
print(clear_set)
Python支持通过操作符|、&、-、^对集合进行联合、取交集、差补和对称差分操作
(1)联合操作是将集合set_a与集合set_b合并成一个新的集合
(2)联合使用“|”符号实现
set_a={'a', 'c'}
set_b={'b', 'c'}
print(set_a | set_b)
(1)交集操作是将集合set_a与集合set_b中相同的元素提取为一个新集合
(2)交集使用“&”符号实现
set_a={'a', 'c'}
set_b={'b', 'c'}
print(set_a & set_b)
(1)差补操作是将只属于集合set_a或者只属于集合set_b中的元素作为一个新的集合
(2)差补使用“-”符号实现
set_a={'a', 'c'}
set_b={'b', 'c'}
print(set_a - set_b)
(1)对称差分操作是将只属于集合set_a与只属于集合set_b中的元素组成一个新集合
(2)对称差分使用“^”符号实现
set_a={'a', 'c'}
set_b={'b', 'c'}
print(set_a ^ set_b)
列表、元组、字典和集合都是Python中的组合数据类型,它们都拥有不同的特点,如下图所示
1、输入两个包含若干整数的等长列表表示两个向量,输出这两个向量的内积,使用列表推导式
vector1 = eval(input('请输入一个包含若干整数的向量:'))
vector2 = eval(input('请再输入一个包含若干整数的等长向量:'))
print(sum([num1*num2 for num1, num2 in zip(vector1, vector2)]))
2、输入一个包含若干整数的列表,输出其中的最大值,以及所有最大值的下标组成的列表,使用列表推导式
data = eval(input('请输入一个包含若干整数的列表:'))
m = max(data)
print(m)
print([index for index, value in enumerate(data) if value==m])
3、输入两个集合A和B,输出它们的并集、交集、对称差集以及差集A-B和B-A,使用集合运算符
A = eval(input('请输入一个集合:'))
B = eval(input('再输入一个集合:'))
print('并集:', A|B)
print('交集:', A&B)
print('对称差集:', A^B)
print('差集A-B:', A-B)
print('差集B-A:', B-A)