Pythonset合并详解

发布时间:2023-05-21

一、Python set合并简介

Python的set是一种无序不重复元素集,合并即将两个set中的元素合并成一个新的set,去掉重复元素。 set合并使用union()方法,也可以使用|运算。

二、Python set合并的基本用法

使用union()方法将两个set合并,并去重。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1.union(set2)
print(set3)    # {1, 2, 3, 4, 5}

使用|运算也可以将两个set合并,并去重。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1 | set2
print(set3)    # {1, 2, 3, 4, 5}

三、Python set合并的高级应用

1、set合并最大公约数

可以使用set合并方法求最大公约数。

def gcd(x, y):
   if x == y:
       return x
   elif x > y:
       return gcd(x-y, y)
   else:
       return gcd(x, y-x)
set1 = {2, 4, 6, 8}
set2 = {3, 6, 9, 12}
gcd_num = gcd(max(set1), max(set2))
set3 = set1.union(set2)
print(gcd_num in set3)    # True

2、set合并求有交集元素

可以使用set合并方法求两个set是否存在交集。

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1.union(set2)
if len(set1) + len(set2) > len(set3):
   print("存在交集")
else:
   print("不存在交集")

3、set合并去除重复元素并保持顺序

可以使用set合并方法去除重复元素,并保持顺序不变。

from collections import OrderedDict
list1 = [1, 2, 3, 3, 4, 5, 6, 7, 7, 8]
list2 = [1, 9, 2, 10, 3, 4, 5, 6]
set1 = set(list1)
set2 = set(list2)
set3 = set1.union(set2)
list3 = list(OrderedDict.fromkeys(set3))
print(list3)    # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

四、Python set合并的注意事项

使用set合并方法时需要注意:

  1. set中的元素必须是可hash的,因为set是基于hash表实现的。所以也就不能够使用list、set、dict等不可hash类型作为元素。
  2. set合并后顺序不可预测,因为set是无序集合。

五、小结

通过本文的学习,我们了解到了Python set合并方法的基本用法和高级应用,并且注意到了使用这个方法时的一些注意事项。