一、List取交集和并集
List是Python里面非常常见的数据类型,但是在对大型List进行操作的时候,往往需要进行一些集合运算,比如取交集和并集。Python提供了很多内置的方法帮助我们完成这些操作。下面我们分别来看一下取交集和并集的方法。
1、两个list取交集
list1 = ['a', 'b', 'c', 'd'] list2 = ['c', 'd', 'e', 'f'] intersection = list(set(list1) & set(list2)) print(intersection)
以上代码就是利用Python的内置方法set,在list1和list2中分别取出重复的元素(也就是交集),然后利用&运算符将它们合并为一个新的List。
2、两个list取并集
list1 = ['a', 'b', 'c', 'd'] list2 = ['c', 'd', 'e', 'f'] union = list(set(list1) | set(list2)) print(union)
以上代码同样是利用Python的内置方法set,先将list1和list2分别转为set类型,去掉重复元素后合并(也就是并集),然后再将合并后的结果转回List类型。
二、两个list集合取并集和交集
除了上述的情况,有时候,我们还需要将两个list对象合并成一个新的List,并去掉重复的元素(也就是并集)。同时,我们也需要找出两个List之间的交集。下面我们分别来看一下如何实现。
1、两个list对象取并集
list1 = ['a', 'b', 'c'] list2 = ['b', 'c', 'd', 'e'] union = list(set().union(list1, list2)) print(union)
上述代码中,我们首先需要利用Python的内置方法set将list1和list2转为set类型,并将它们合并到一个空set中。然后利用list方法将新的集合转为List类型。这样,我们就可以得到两个list对象的并集了。
2、两个list对象取交集
list1 = ['a', 'b', 'c'] list2 = ['b', 'c', 'd', 'e'] intersection = list(set(list1).intersection(set(list2))) print(intersection)
同样地,我们需要使用Python的内置方法set将list1和list2转为set类型,然后利用intersection方法取出两个集合之间的交集。最后,我们再将结果转为List类型。
三、两个list取交集的Python代码
为了方便大家查阅,我们将上面的两个list取交集的Python代码放在下面。
list1 = ['a', 'b', 'c', 'd'] list2 = ['c', 'd', 'e', 'f'] intersection = list(set(list1) & set(list2)) print(intersection)
四、两个list对象取交集的高效率
有时候,我们需要计算的集合可能非常大,而如果采用上面的set方法可能会导致效率很低。在这种情况下,我们可以使用Python内置的intersection方法来完成这项工作。下面我们来看一下如何使用这个方法。
1、两个list对象取交集
list1 = ['a', 'b', 'c'] list2 = ['b', 'c', 'd', 'e'] intersection = list(set(list1).intersection(set(list2))) print(intersection)
如上代码所示,我们可以使用intersection方法来获取两个list对象之间的交集。这个方法比较高效,尤其是在对大型集合进行运算时。
五、两个list对象取差集
除了并集和交集之外,我们还需要经常对两个集合进行差集运算。具体来说,这个运算是指从一个集合中移除另一个集合中的项。下面我们来看一下如何实现。
1、list取差集
list1 = ['a', 'b', 'c', 'd'] list2 = ['c', 'd', 'e', 'f'] diff = list(set(list1) - set(list2)) print(diff)
在这个例子中,我们希望获取在list1中,但是不存在于list2中的元素。为了实现这个目标,我们需要使用set方法将list1和list2转为set类型。然后,我们利用'-'符号,从list1中减去list2中的元素。最后,我们再将结果转为List类型。
2、两个list对象取差集
list1 = ['a', 'b', 'c'] list2 = ['b', 'c', 'd', 'e'] diff = list(set(list1).difference(set(list2))) print(diff)
除此之外,我们还可以使用difference方法来获取两个list对象之间的差集。同样地,我们需要使用set方法将list1和list2转为set类型,然后使用difference方法计算差集。最后,我们再将结果转为List类型。
六、总结
在Python的标准库中,有很多方便快捷的方法可以实现集合运算。不管是取交集还是取并集,都可以用Python的set方法轻松完成。如果你需要计算两个大型集合之间的交集或者并集,那么推荐使用Python内置的intersection和union方法,这两个方法的效率比set高效得多。