精华内容
下载资源
问答
  • 最近突然有个需求(取两个文件数据的交集),数据量非常大(2000多万行的数据),最开始的思路是先取一个文件所有的数据,...然后想到数学里的列表取交集,百度一下,果然有,测试了一下,速度非常快,完美的解决问题。

    最近突然有个需求(取两个文件数据的交集),数据量非常大(2000多万行的数据),最开始的思路是先取一个文件所有的数据,保存成一个列表,然后判断是否在另一个文件中,花了十几分钟写出来后,一运行,差点崩溃,太慢了。然后想到数学里的列表取交集,百度一下,果然有,测试了一下,速度非常快,完美的解决问题。

    一、核心代码

    :先把列表用set转换成集合然后在取交集、并集和差集

    1. 两个列表取交集

      list_1 = [1,2,3]
      list_2 = [2,3,4]
      print(list(set(list_1) & set(list_2)))
      print(list(set(list_1).intersection(set(list_2))))
      
      #结果
      [2, 3]
      [2, 3]
      
    2. 两个列表取并集

      list_1 = [1,2,3]
      list_2 = [2,3,4]
      print(list(set(list_1) | set(list_2)))
      print(list(set(list_1).union(set(list_2))))
      
      #结果
      [1, 2, 3, 4]
      [1, 2, 3, 4]
      
    3. 两个列表取差集

      注:下述两个方法效果不一样

      list_1 = [1,2,3]
      list_2 = [2,3,4]
      print(list(set(list_1) ^ set(list_2))) #两个列表取差集
      print(list(set(list_1).difference(set(list_2)))) #list_1中有而list_2中没有的
      
      #结果
      [1, 4]
      [1]
      

    二、小工具

    注:

    1. 每个文件的数据都是每行一条
    2. 此工具比较消耗内存(不过影响不大)
    file_1_path = "./file_1.txt" #文件_1路径
    file_2_path = "./file_2.txt"  #文件_2路径
    result_path = "./result.txt" #结果文件路径
    
    #把文件_1中的数据读取成列表file_1_list
    with open(file_1_path, 'r', encoding='utf-8') as file_1_data:
        file_1_list = file_1_data.readlines()
    
    #把文件_2中的数据读取成列表file_2_list
    with open(file_2_path, 'r', encoding='utf-8') as file_2_data:
        file_2_list = file_2_data.readlines()
    
    #两个列表取交集(并集或差集只需修改此处即可)
    intersection_list = list(set(file_1_list) & set(file_2_list))
    
    #保存结果文件
    with open(result_path,'a', encoding='utf-8') as f:
        num = 0
        for i in intersection_list:
            num += 1
            f.write(i)
            print("第%s个保存完成"%num)
    print("保存文件结束!!!")
    

    三、运行结果展示

    可以看到800多万和300多万对比只用了6秒多(实际时间可能会根据电脑性能出现小误差)
    在这里插入图片描述

    展开全文
  • intersection() 方法用于返回两个或更多集合中都包含的元素,即交集。 语法: 在这里插入代码片set.intersection(set1, set2 … etc) 参数: set1 – 必需,要查找相同元素的集合 set2 – 可选,其他要查找相同元素...

    在python 3.x 版本中 set 中有函数intersection()

    intersection() 方法用于返回两个或更多集合中都包含的元素,即交集。

    语法:

    在这里插入代码片set.intersection(set1, set2 … etc)

    参数:

    • set1 – 必需,要查找相同元素的集合
    • set2 – 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开

    返回值:

    返回一个新的集合

    实操:

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    a = [5, 6, 7, 8, 9]
    b = [4, 6, 7, 8, 10]
    print(set(a).intersection(set(b)))
    
    
    a = {5, 6, 7, 8, 9}
    b = {4, 6, 7, 8, 10}
    print(a.intersection(b))
    

    输出结果:

    {8, 6, 7}
    {8, 6, 7}
    
    展开全文
  • python两个 list 获取交集,并集,差集的方法 1. 获取两个list 的交集/方法一: a=[2,3,4,5] b=[2,5,8] tmp = [j for j in a if j in b] #列表推导式求的两个列表交集 print(tmp) print("**"*100) 方法二: print...

    python两个 list 获取交集,并集,差集的方法

    1. 获取两个list 的交集/

    方法一:
    a=[2,3,4,5]
    b=[2,5,8]
    tmp = [j for j in a if j in b] #列表推导式求的两个列表的交集
    print(tmp)
    方法二:
    print(list(set(a).intersection(set(b)))) # #列用集合的取交集方法
    方法三:
    lst = []
    for i in a:
    if i in b :
    lst.append(i)
    print(lst)

    2. 获取两个 list 的差集

    方法一:
    ret = list(set(a)-set(b))
    print(ret)
    方法二:
    print(list(set(b).difference(set(a)))) # b中有而a中没有的

    3.并集

    方法一:
    rets= list(set(a).union(set(b)))
    print(rets)
    方法二:
    print(list(set(b) | (set(a))))

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • # 并集 def list_intersection(list1: list, list2: list) -...# 交集 def list_union(list1: list, list2: list) -> list: return list(set(list1).union(set(list2))) # 差集(在in_list中,但是不在not_in_list
    # 交集
    def list_intersection(list1: list, list2: list) -> list:
        return list(set(list1).intersection(set(list2)))
    
    
    # 并集
    def list_union(list1: list, list2: list) -> list:
        return list(set(list1).union(set(list2)))
    
    
    # 差集(在in_list中,但是不在not_in_list中)
    def list_difference(in_list: list, not_in_list: list) -> list:
        return list(set(in_list).difference(set(not_in_list)))
    
    
    if __name__ == '__main__':
        list_1 = ['a', 'b', 'c', 1, 2, 3]
        list_2 = [1, 2, 3, 4, 5, 6]
        print("交集:", list_intersection(list_1, list_2))
        print('并集:', list_union(list_1, list_2))
        print('差集(在list_1中,但不在list_2中):', list_difference(list_1, list_2))
    
    
    展开全文
  • ...​tmp = [val for val in a if val in b] #列表推导式求的两个列表的交集 ​print tmp #[2, 5] #方法二 ​ print list(set(a).intersection(set(b))) #列用集合的取交集方法2. 获取两个li...
  • 1.获取两个liet的交集 ...tmp = [i for i in a if i in b] #列表推导式求的两个列表的交集 print(tmp) 方法二: print(list(set(a).intersection(set(b))) #列用集合的取交集方法 方法三: lst = [] for i in ...
  • 2. 了解了两个列表取交集和补集的方法 R语言取交集和补集更简单,直接有函数。 perl 稍麻烦一些, 关键是用hash! #!/usr/bin/perl -w use strict; my @a = (1, 2, 3, 4); my @b = (3, 4, 5); ...
  • 1、找出两个列表里重复的元素 2、不仅仅是取交集这么简单,注意 Note 里的那句话: 即交集的定义是只要元素出现,但结果里需要展示出现次数最少的。比如 nums1 = [1,2,2,1], nums2 = [2,2] 按题意取交集,如果正常按...
  • Python 两个列表取并集、差集、交集 大家都知道python中set可以去重,对于两个list的运算也可以通过转换为set来实现,在数据量大的情况下,可以省去不必要的for遍历操作 如有下面两个数组: x = [1,2,3,4] y = [3,...
  • # 集合的最大特点是:集合里边的元素是不可重复的并且集合内的元素还是无序的,所以一般情况下集合常用的两个场景是: # 1.去重(如:列表去重);2.关系测试(如:取交集、取并集、取差集等) # 创建集合 注意:...
  • python集合

    2017-11-07 15:25:00
    python集合 特点:去重、关系测试;无序的 ; 功能:增、删、查 应用范围: 1. python班的同学和运维班的同学 其中有同学两个班都报了, 现在要把两个班的同学合并,不能有重复。...(取两个列表交集)...
  • python之集合操作

    2021-03-28 17:33:23
    特点总结:(它有可变集合(set()) 和不可变集合(frozenset)... update() 把一个列表合并到集合里面 union() 俩个集合的并集 intersection() 俩个集合的交集 difference() 俩个集合的差集 issubset...
  • Python集合用处

    千次阅读 2019-06-17 16:15:01
    关系测试(如:取交集、取并集、取差集等) 一、去重 1、比较麻烦的方法——利用列表 方法就是遍历一个列表,对其中的每个数据判断在不在第二个列表里 list1=[1,2,3,4] list2=[3,4,5,6] list3...
  • python 集合的使用

    2017-08-24 17:35:00
    特点:列表去重,取两个列表交集(关系测试), 具体代码实现 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # Version:python3.5.0 list_1=[1,2,3,4,5,6,7,5,6] list_1=set(list_1) #去除列表中的重复的...
  • python新手必躺的5大坑

    2020-05-28 09:21:52
    对于Python新手来说,写代码很少考虑代码的效率和简洁性,因此容易造成代码冗长、执行慢,这些都是需要改进的地方...例如,取两个列表交集: def common_elements(list1, list2): common = [] for item1 in list1:
  • python 学习day4

    2019-02-20 22:15:04
    list_1 = [1,4,8,7,8,5,4,3] list_2 = [2,4,9,7] list_3 = [1,4] list_4 = [7,8] print(list_1) # 集合可以列表去重 list_1 = set(list_1) #集合是无序的 print(list_1,'\n',type(list_1)...# 取两个列表交集 prin...
  • python————集合

    2020-12-03 16:59:33
    由于集合中的元素不能出现多次,这使得集合在很大程度上能够高效地从列表或元组中删除重复值,并执行并集、交集等常见的的数学操作。 集合类型的值有种创建方式:一种是用一对大括号将多该元素括起来,元素...
  • 对于Python新手来说,写代码很少考虑代码的效率和简洁性,因此容易造成代码冗长、执行慢,这些都是需要改进的...例如,取两个列表交集: def common_elements(list1, list2): common = [] for item1 in list1: .
  • Python数据类型(3)

    2019-07-22 23:55:00
    1.集合 集合是一个无序且无重复元素的数据组合,它的主要作用如下: (1)去重,当把一个列表变成集合时,就自动去重了; (2)关系测试,测试两组数据之间的交集、差集以及并集等数据关系。...取两个集...
  • Python除了List、Tuple、Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是:集合里边的元素是不可重复的并且集合内的元素还是无序的,所以一般情况下集合常用的两个场景是:1.去重(如:...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

python两个列表取交集

python 订阅