更多编程教程请到:菜鸟教程 https://www.piaodoo.com/

友情链接:好看站 http://www.nrso.net/

高州阳光论坛https://www.hnthzk.com/

问题

假如,在有两个大文件分别存储了大量的数据,数据其实很简单就是一堆字符串,每行存储一条,如何快速筛选出两个文件的异同之处么,或者如何筛选出两个文件中不同的元素呢?

刚开始我是通过最简单的方法,利用for循环去一个个的判断,时间复杂度为m的n次幂,当然当文件数量级为十万或者百万时,速率简直慢到了极点。

解决方法

利用set()的different(方法)可快速比较,两个set集合的不同之处,也就是对集合进行数学运算

假设:数据1拥有858882条记录,数据2有360029条记录,快速挑选出数据2中而不存在与数据1中的数据

方法:先将两个文件中的数据读入两个list:data1和data2,然后通过:set(data2).difference(set(data1)),获取data2与data1的差集

下面为一个小的demo,可以看到近百万级的数据,比较出差集也就需要1秒左右,效率不是一般的高

import time
t1 = time.time()
data1 = []
for i in open("inDB.txt","r",encoding="utf-8"):i = i.strip("\n")i = i.lower()data1.append(i)
data2 = []
for i in open("data/18年.filename","r",encoding="utf-8"):i = i.strip("\n")i = i.lower()data2.append(i)
newdata = set(data2).difference(set(data1))
t2 = time.time()

print(f"data1 length:\t{len(data1)}")
print(f"data2 length:\t{len(data2)}")
print(f"newdata length:\t{len(newdata)}")
print(f"time use:\t{round(t2 - t1,3)}s")

list最多可以存放多少条数据呢?

python中list最多可以存放多少条数据呢?

对于这个问题,有个网友调研了python的文档,结果跟计算机的性能相关

64位机器:2^63-1=9223372036854775807
32位机器:2^31-1=2147483647
import sys
print(sys.maxsize)
print(pow(2,63)-1)
9223372036854775807
9223372036854775807

集合set的操作

内置函数 作用
add() 为集合添加元素
clear() 移除集合中的所有元素
copy() 拷贝一个集合
difference() 返回多个集合的差集
difference_update() 移除集合中的元素,该元素在指定的集合也存在。
discard() 删除集合中指定的元素
intersection() 返回集合的交集
intersection_update() 返回集合的交集。
isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset() 判断指定集合是否为该方法参数集合的子集。
issuperset() 判断该方法的参数集合是否为指定集合的子集
pop() 随机移除元素
remove() 移除指定元素
symmetric_difference() 返回两个集合中不重复的元素集合。
symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union() 返回两个集合的并集
update() 给集合添加元素

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持菜鸟教程www.piaodoo.com。

Python实现快速大文件比较代码解析相关推荐

  1. python无法处理特别大的数据文件_Python实现快速大文件比较代码解析

    问题 假如,在有两个大文件分别存储了大量的数据,数据其实很简单就是一堆字符串,每行存储一条,如何快速筛选出两个文件的异同之处么,或者如何筛选出两个文件中不同的元素呢? 刚开始我是通过最简单的方法,利用 ...

  2. python中的doc_基于Python获取docx/doc文件内容代码解析

    这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...

  3. python用什么处理文件_利用Python如何快速处理文件

    利用Python如何快速处理文件 我之前要合并将近1000个CSV表格 每个表格共370列,约360行不等,列名相同 三个方案瞬间浮现在我眼前: 1.Ctrl C + Ctrl V--可以睡公司了: ...

  4. python文本格式上一日_一日一技:在 Python 中快速遍历文件

    一日一技:在 Python 中快速遍历文件 摄影:产品经理 厨师:产品经理 当我们要在一个文件夹及其子文件夹里面寻找特定类型的文件,我们可能会这样写代码: 没有子文件夹时 import os all_ ...

  5. 一文教会你如何用 Python 分割合并大文件

    有时候,我们需要把一个大文件发送给别人,但是限于传输通道的限制,比如邮箱附件大小的限制,或者网络状况不太好,需要将大文件分割成小文件,分多次发送,接收端再对这些小文件进行合并.今天就来分享一下用 Py ...

  6. 使用请求在python中下载大文件

    本文翻译自:Download large file in python with requests Requests is a really nice library. 请求是一个非常不错的库. I' ...

  7. Python中sort和sorted函数代码解析

    Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...

  8. 用 Python 高效处理大文件

    前言 为了进行并行处理,我们将任务划分为子单元.它增加了程序处理的作业数量,减少了整体处理时间. 例如,如果你正在处理一个大的CSV文件,你想修改一个单列.我们将把数据以数组的形式输入函数,它将根据可 ...

  9. Python——CSV读取大文件报错_csv.Error: field larger than field limit

    Python--CSV读取大文件报错_csv.Error: field larger than field limit 使用Python读取较大的csv文件时,可能出现大字段,导致超过字段默认限制,从 ...

  10. python读取大文件-python如何读取大文件以及分析时的性能优化小技巧

    在二代.三代测序背景下,分析人员难免会遇到解析超过1G.或者10G以上的文件.这里将给大家简单介绍下如何用python读取大文件,并给大家提两个优化代码的小建议. 首先,python 读取GB级大文件 ...

最新文章

  1. springboot打包成jar包后找不到xml,找不到主类的解决方法
  2. 小米5x_小米刷机大全(附教程)
  3. Django之ORM(多对多)
  4. jq画布插件_超炫HTML 5开发的jQuery进度条插件
  5. Android之图片边显示模糊原因
  6. 20175305张天钰 《java程序设计》第四周课下测试总结
  7. 计算机组成原理AB什么运算,2010~2011学年武汉大学计算机组成原理AB类AB卷及答案...
  8. 【hue】 There are currently no roles defined
  9. cat EOF file
  10. 浅谈Android事件分发
  11. java到达时间后自动执行代码_java设置按时间自动执行
  12. 2021年饶州中学高考成绩查询,鄱阳饶州中学2019高考成绩喜报、一本二本上线人数情况...
  13. c语言五子棋对局结果存储,基于C语言五子棋小游戏总结.doc
  14. 程序开发中的软实力和硬实力
  15. 如何删除复制文字产生的word回车换行符
  16. 吴恩达神经网络与深度学习——深度神经网络
  17. vue2.0 在华为手机等手机自带浏览器打开白屏的问题
  18. 【转】如何检测wifi信号强度? -- 不错
  19. 单位dB(分贝)的含义和好处,dBm(dBmW 分贝毫瓦)的含义 dB的含义
  20. android 根文件系统,Android根文件系统相关应用介绍

热门文章

  1. python爬虫跳过付费数据_Python爬虫教程:包图网免费付费素材爬取!
  2. 如何清空redis中的数据
  3. 小程序文档整理之 -- API(调试接口)
  4. matlab 自写iradon,matlab的radon变换
  5. Selenium+超级鹰进行识别滑动操作
  6. 2021年N1叉车司机考试总结及N1叉车司机复审考试
  7. U8采购订单联查采购入库单
  8. 鼠标自动点击器linux,鼠标自动点击器PC版下载
  9. 双二阶广义积分器(SOGI)软件锁相(基于双线性变换)推导及实验代码
  10. qt designer 手册翻译