前面我们学习了集合的几种关系运算,交集、并集、差集、对称差集和父子集,我们都是用对应的符号来取的。
同时集合也有一些内置方法,可以实现取交集、并集、差集、对称差集和父子集。
首先来看取交集的内置方法。
hobbies1 = ['吃饭', '睡觉', '看书', '钢琴', '跳舞', '游泳']
hobbies2 = ['吃饭', '睡觉', '打游戏', '追剧', '健身']
print(hobbies1.intersection(hobbies2))
两种方法取的交集是一样的。
然后再看取并集。
hobbies1 = {'吃饭', '睡觉', '看书', '钢琴', '跳舞', '游泳'}
hobbies2 = {'吃饭', '睡觉', '打游戏', '追剧', '健身'}
print(hobbies1.union(hobbies2))
接着是取差集。
hobbies1 = {'吃饭', '睡觉', '看书', '钢琴', '跳舞', '游泳'}
hobbies2 = {'吃饭', '睡觉', '打游戏', '追剧', '健身'}
print(hobbies1.difference(hobbies2))
print(hobbies2.difference(hobbies1))
对称差集。
hobbies1 = {'吃饭', '睡觉', '看书', '钢琴', '跳舞', '游泳'}
hobbies2 = {'吃饭', '睡觉', '打游戏', '追剧', '健身'}
print(hobbies1.symmetric_difference(hobbies2))
父子集。
s1 = {1, 2, 3}
s2 = {1, 2}
print(s1.issuperset(s2))
print(s1.issubset(s2))
上面的我就不详细的展开讲了,这些内置功能还是用符号比较方便。
到这里我就把集合的关系运算讲完了,接下来我们学习集合的另外一种用途。
去重。
集合去重的话还没办法保证原来的顺序的。我先定义一个列表,然后转成集合。
l = ['a', 'b', 'c', 'a', 'd', 'e']
print(set(l))
打印结果出来了,我们看到打印出来的并没有保证我们原来的顺序。同样的代码我再运行一下。
结果又变了,每次顺序可能都不一样。
还有就是集合只是针对不可变类型,前面我们也说过了。
我再定义一个列表,如果我要对它进行去重的话,用集合就不行了,会直接报错。
info = [['张三', 18]
, ['李四', 19]
, ['王五', 17]
, ['张三', 18]
, ['李四', 19]]
set(info)
因为它里面嵌套的都是列表,而列表又都是可变类型,如果我们要对它进行去重的话也很简单,还是一个for循环就实现了。
info = [['张三', 18]
, ['李四', 19]
, ['王五', 17]
, ['张三', 18]
, ['李四', 19]]
new_info = []
for i in info:
if i not in new_info:
new_info.append(i)
print(new_info)
集合也可以用len来统计长度。
也可以用in和not in 来做成员运算。
还有for循环。
这几个功能对于学到现在的你来说太简单了,我就不做演示了。
未经允许不得转载:445IT之家 » Python 集合类型4