15 difference()方法:返回集合的差集
文章目录
1.语法要点
difference()方法用于返回集合的差集。
作用和符号-
取差集一样。
set_1.difference(set_2)
删除两个集合都有的元素,保留集合1
特有的元素。
set_2.difference(set_1)
删除两个集合都有的元素,保留集合2
特有的元素。
顺序很重要,谁在前就保留谁特有的元素。
difference 和符号-
的作用一样,都是取差集。
不同点是:
符号-
只能取集合之间的差集。
difference()方法可以取集合与可迭代对象之间的差集。
difference()方法的参数是可迭代对象:列表、元组、字典、集合、字符串。
difference()方法的参数不可以是整数、浮点数。
2.实操练习
2.1参数为集合
# 用{}新建3个集合
set_1 = {1, 2, 3}
set_2 = {5, 4, 3}
set_3 = {5, 1, 3}
# 计算集合与集合的差集
print('集合1与集合2的差集:',set_1 - set_2)
print('集合1与集合2的差集:',set_1.difference(set_2),'\n')
print('集合1与集合2、3的差集:',set_1 - set_2 - set_3)
print('集合1与集合2、3的差集:',set_1.difference(set_2, set_3))
【终端输出】
集合1与集合2的差集: {1, 2}
集合1与集合2的差集: {1, 2}
集合1与集合2、3的差集: {2}
集合1与集合2、3的差集: {2}
集合1与集合2都有的元素是3,集合1与集合2的差集以集合1为准,删除都有的元素3,保留集合1特有的元素1、2,因此集合1与集合2的差集为1,2。
集合1与集合2、3的差集先计算集合1与集合2的差集,结果为元素1、2。
然后计算与集合3的差集,元素1、2与集合3都有的元素是1,以集合1为准,删除都有的元素1,保留元素2,因此集合1与集合2、3的差集为2。
2.2参数为列表
# 用{}新建1个集合
set_1 = {1, 2, 3}
# 声明列表
list_1 = [1,2]
# 计算集合与列表的差集
print('集合1与列表的差集:',set_1.difference(list_1))
【终端输出】
集合1与列表的差集: {3}
2.3 参数为元组
# 用{}新建1个集合
set_1 = {1, 2, 3}
# 声明元组
tuple_1 = (2,3)
# 计算集合与元组的差集
print('集合1与元组的差集:',set_1.difference(tuple_1))
【终端输出】
集合1与元组的差集: {1}
2.4 参数为字典
# 用{}新建一个集合
set_1 = {3,4,5}
# 用{}新建一个字典
dict_1 = {
1:'姓名',
2:'学号',
3:'性别'
}
# 计算集合与字典的差集
print(set_1.difference(dict_1))
【终端输出】
{4, 5}
2.5 参数为字符串
# 用{}新建一个集合
set_1 = {'1', '2', '3'}
# 声明一个字符串
str_1 = '246'
print('集合与字符串的差集:',set_1.difference(str_1))
【终端输出】
集合与字符串的差集: {'3', '1'}
2.6 参数为可迭代对象
# 用{}新建3个集合
set_1 = {1, 2, 8}
set_2 = {5, 4, 3}
set_3 = {5, 1, 3}
# 声明列表
list_1 = [1,2]
# 声明元组
tuple_1 = (2,3)
# 用{}新建一个字典
dict_1 = {
1:'姓名',
2:'学号',
3:'性别'
}
# 声明一个字符串
str_1 = '246'
print('计算集合与多个可迭代对象的差集:',set_1.difference(set_2, list_1, tuple_1, dict_1, str_1))
【终端输出】
计算集合与多个可迭代对象的差集: {8}
3.综合练习
'''
任务:自定义一个函数,获取两个列表的差集。
步骤1.用set方法将列表转换为集合;
步骤2.用difference方法计算2个集合的差集;
步骤3.用list函数将结果转换为列表。
'''
# 用def自定义一个函数
def difference (a,b ) :
#用set方法将列表转换为集合;
set_1 = set(a)
set_2 = set(b)
#用difference方法计算2个集合的差集;
set_3 = set_1.difference(set_2)
# 将得到的结果转换为列表
return list(set_3)
# 传入实参
# 相当于a = [1,2,3,4]
# 相当于b = [2,4,6]
print(difference( [1,2,3,4], [2,4,6]) )
【终端输出】
[1, 3]