午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python實(shí)現(xiàn)快速大文件比較代碼解析

瀏覽:30日期:2022-07-12 10:37:15

問題

假如,在有兩個(gè)大文件分別存儲(chǔ)了大量的數(shù)據(jù),數(shù)據(jù)其實(shí)很簡(jiǎn)單就是一堆字符串,每行存儲(chǔ)一條,如何快速篩選出兩個(gè)文件的異同之處么,或者如何篩選出兩個(gè)文件中不同的元素呢?

剛開始我是通過最簡(jiǎn)單的方法,利用for循環(huán)去一個(gè)個(gè)的判斷,時(shí)間復(fù)雜度為m的n次冪,當(dāng)然當(dāng)文件數(shù)量級(jí)為十萬或者百萬時(shí),速率簡(jiǎn)直慢到了極點(diǎn)。

解決方法

利用set()的different(方法)可快速比較,兩個(gè)set集合的不同之處,也就是對(duì)集合進(jìn)行數(shù)學(xué)運(yùn)算

假設(shè):數(shù)據(jù)1擁有858882條記錄,數(shù)據(jù)2有360029條記錄,快速挑選出數(shù)據(jù)2中而不存在與數(shù)據(jù)1中的數(shù)據(jù)

方法:先將兩個(gè)文件中的數(shù)據(jù)讀入兩個(gè)list:data1和data2,然后通過:set(data2).difference(set(data1)),獲取data2與data1的差集

下面為一個(gè)小的demo,可以看到近百萬級(jí)的數(shù)據(jù),比較出差集也就需要1秒左右,效率不是一般的高

import timet1 = 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')

Python實(shí)現(xiàn)快速大文件比較代碼解析

list最多可以存放多少條數(shù)據(jù)呢?

python中l(wèi)ist最多可以存放多少條數(shù)據(jù)呢?

對(duì)于這個(gè)問題,有個(gè)網(wǎng)友調(diào)研了python的文檔,結(jié)果跟計(jì)算機(jī)的性能相關(guān)

64位機(jī)器:2^63-1=922337203685477580732位機(jī)器:2^31-1=2147483647import sysprint(sys.maxsize)print(pow(2,63)-1)92233720368547758079223372036854775807

集合set的操作

內(nèi)置函數(shù) 作用 add() 為集合添加元素 clear() 移除集合中的所有元素 copy() 拷貝一個(gè)集合 difference() 返回多個(gè)集合的差集 difference_update() 移除集合中的元素,該元素在指定的集合也存在。 discard() 刪除集合中指定的元素 intersection() 返回集合的交集 intersection_update() 返回集合的交集。 isdisjoint() 判斷兩個(gè)集合是否包含相同的元素,如果沒有返回 True,否則返回 False。 issubset() 判斷指定集合是否為該方法參數(shù)集合的子集。 issuperset() 判斷該方法的參數(shù)集合是否為指定集合的子集 pop() 隨機(jī)移除元素 remove() 移除指定元素 symmetric_difference() 返回兩個(gè)集合中不重復(fù)的元素集合。 symmetric_difference_update() 移除當(dāng)前集合中在另外一個(gè)指定集合相同的元素,并將另外一個(gè)指定集合中不同的元素插入到當(dāng)前集合中。 union() 返回兩個(gè)集合的并集 update() 給集合添加元素

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: heyzo加勒比jav素人 | 日韩欧美一区在线 | 欧美在线小视频 | 高清视频一区二区 | 波多野结衣亚洲 | 国产高潮久久久 | 巨骚综合 | 午夜国产福利 | 中文字幕在线观看一区二区 | 国产亚洲在线观看 | 天天插天天搞 | 国产女主播喷水高潮网红在线 | 97香蕉久久夜色精品国产 | 欧美一区二区在线免费观看 | 天天插天天狠天天透 | 欧美日韩综合一区二区三区 | 国产成人综合自拍 | 欧美黄色aaa | 欧美色图p | 国产午夜一区二区 | 高清在线一区 | 日韩激情小视频 | 午夜一区二区三区 | 国产精品久久久久永久免费看 | 日本亚洲一区二区三区 | 免费的av网址 | 美女一区二区视频 | 久久久久久久久网站 | 在线观看免费av片 | 在线观看视频日韩 | 国产一区不卡 | 性插动态| 中文字幕综合在线 | 在线毛片网 | 你懂的在线观看 | 国产成人在线免费观看视频 | 成人在线观看av | 日韩不卡一区二区 | 国产精品色婷婷99久久精品 | 亚洲欧洲国产综合 | 欧美三级a做爰在线观看 |