两个列表lst1和lst2,计算两个列表的公共元素和非公共元素
方法1:
列表推导式
lst1 = [1, 3, 7] lst2 = [3, 5, 4] a = [x for x in lst1 if x in lst2] b = [y for y in (lst1 + lst2) if y not in a] print(a) print(b)
方法2:
普通的for循环
lst1 = [1, 3, 7] lst2 = [3, 5, 4] a = [] b = [] for i in lst1: for j in lst2: if i == j: a.append(i) for k in (lst1 + lst2): if k not in a: b.append(k) print(a) print(b)
方法3:
利用集合(set)运算
lst1 = [1, 3, 7] lst2 = [3, 5, 4] a = set(lst1) # {1, 3, 7} b = set(lst2) # {3, 5, 4} # 交集 a & b 包含集合a和集合b中的公共元素 # print(a & b) # {3} # 对称差集 a ^ b 包含集合a和集合b中不重复的所有元素 # print(a ^ b) # {1, 4, 5, 7} print(list(a & b)) # [3] print(list(a ^ b)) # [1, 4, 5, 7] # 并集 a | b 包含集合a和集合b中所有的元素 # 差集 a - b 包含集合a中有的集合b中没有的元素 x = a.symmetric_difference(b) y = a.symmetric_difference_update(b) # 自我更新不返回对象,即a ^= b print(x) # {1, 4, 5, 7} print(y) # None print(a) # {1, 4, 5, 7}