求求你了,不要再写循环求两个列表的交集,并集和差集了 | pythonic 小技巧

简介: 在 Python 中,求两个列表的交集,并集和差集是经常会遇到的需求,而且也比较简单。

在 Python 中,求两个列表的交集,并集和差集是经常会遇到的需求,而且也比较简单。


最容易想到的就是写循环,对两个列表分别进行循环,然后判断元素是否在另一个列表中,求得最终结果。


但这种方法比较 low,没啥技术含量。身为一名 Python 程序员,一定要写够 pythonic 的代码。


废话不多说,直接看代码。


# list_operate.py
def main():
    list_a = [1, 2, 3, 4, 5]
    list_b = [4, 5, 6, 7, 8]
    # 求交集的两种方式
    res_a = [i for i in list_a if i in list_b]
    res_b = list(set(list_a).intersection(set(list_b)))
    print(f"res_a is: {res_a}")
    print(f"res_b is: {res_b}")
    # 求并集
    res_c = list(set(list_a).union(set(list_b)))
    print(f"res_c is: {res_c}")
    # 求差集的两种方式,在B中但不在A中
    res_d = [i for i in list_b if i not in list_a]
    res_e = list(set(list_b).difference(set(list_a)))
    print(f"res_d is: {res_d}")
    print(f"res_e is: {res_e}")
if __name__ == '__main__':
    main()
复制代码


来看一下输出:


# python3 list_operate.py
res_a is: [4, 5]
res_b is: [4, 5]
res_c is: [1, 2, 3, 4, 5, 6, 7, 8]
res_d is: [6, 7, 8]
res_e is: [8, 6, 7]
复制代码


结果还是没问题的,别一顿操作猛如虎,结果是错的,那就尴尬了。


总结一下,基本上就是两种思路:

  1. 使用列表表达式
  2. 使用 set 的内置方法,再转换成 list


以上。


目录
相关文章
|
3月前
|
算法 Python
Python实现求多个集合之间并集的方法
Python实现求多个集合之间并集的方法
35 0
Python实现求多个集合之间并集的方法
|
3月前
|
JavaScript
JS【数组】交集、差集、补集、并集
JS【数组】交集、差集、补集、并集
22 0
|
5月前
leetcode代码记录(两个数组的交集
leetcode代码记录(两个数组的交集
23 1
|
12月前
|
存储 算法 前端开发
前端算法-两个数组的交集
前端算法-两个数组的交集
|
Java
一篇文章教你学会:对Java集合进行并集,交集,差集运算
一篇文章教你学会:对Java集合进行并集,交集,差集运算
367 0
|
JavaScript
js数组拓展 交集 并集 差集 去重
js数组拓展 交集 并集 差集 去重
92 0
|
存储 安全 Java
Java常用集合的总结,集合中的(交集,并集,差集,补集,对称差集)
Java常用集合的总结,集合中的(交集,并集,差集,补集,对称差集)
411 0
Java常用集合的总结,集合中的(交集,并集,差集,补集,对称差集)
|
存储 算法 Go
算法练习第六天——两个数组的交集
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
|
Java C++
每日一题——349. 两个数组的交集
每日一题——349. 两个数组的交集
109 0