python读取⼤量数据⽐较快_Python实现快速⼤⽂件⽐较代码
解析
问题
假如,在有两个⼤⽂件分别存储了⼤量的数据,数据其实很简单就是⼀堆字符串,每⾏存储⼀条,如何快速筛选出两个⽂件的异同之处么,或者如何筛选出两个⽂件中不同的元素呢?
刚开始我是通过最简单的⽅法,利⽤for循环去⼀个个的判断,时间复杂度为m的n次幂,当然当⽂件数量级为⼗万或者百万时,速率简直慢到了极点。
解决⽅法
利⽤set()的different(⽅法)可快速⽐较,两个set集合的不同之处,也就是对集合进⾏数学运算
python怎么读取文件中的数据假设:数据1拥有858882条记录,数据2有360029条记录,快速挑选出数据2中⽽不存在与数据1中的数据
⽅法:先将两个⽂件中的数据读⼊两个list:data1和data2,然后通过:set(data2).difference(set(data1)),获取data2与data1的差集
下⾯为⼀个⼩的demo,可以看到近百万级的数据,⽐较出差集也就需要1秒左右,效率不是⼀般的⾼
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()
给集合添加元素
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持服务器之家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论