最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年09月04日 14:52:51   作者:阿遙  
這篇文章主要介紹了Python實現(xiàn)快速大文件比較代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

問題

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

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

解決方法

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

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

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

下面為一個小的demo,可以看到近百萬級的數(shù)據(jù),比較出差集也就需要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最多可以存放多少條數(shù)據(jù)呢?

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

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

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

集合set的操作

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python寫捕魚達人的游戲?qū)崿F(xiàn)

    Python寫捕魚達人的游戲?qū)崿F(xiàn)

    這篇文章主要介紹了Python寫捕魚達人的游戲?qū)崿F(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 200個Python?標(biāo)準(zhǔn)庫總結(jié)

    200個Python?標(biāo)準(zhǔn)庫總結(jié)

    這篇文章主要給大家分享了200個Python?標(biāo)準(zhǔn)庫總結(jié),主要對文本、數(shù)據(jù)類型、數(shù)學(xué)等多個類型總結(jié),既有一定的參考價值,需要的小伙伴可以參考一下
    2022-01-01
  • python中的多cpu并行編程

    python中的多cpu并行編程

    這篇文章主要介紹了python中的多cpu并行編程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python爬蟲中抓取指數(shù)的實例講解

    python爬蟲中抓取指數(shù)的實例講解

    在本篇文章里小編給大家整理了關(guān)于python爬蟲中抓取指數(shù)的實例講解內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2020-12-12
  • 利用PyCharm Profile分析異步爬蟲效率詳解

    利用PyCharm Profile分析異步爬蟲效率詳解

    這篇文章主要給大家介紹了關(guān)于如何利用PyCharm Profile分析異步爬蟲效率的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用PyCharm具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 關(guān)于 Python json中l(wèi)oad和loads區(qū)別

    關(guān)于 Python json中l(wèi)oad和loads區(qū)別

    這篇文章主要介紹了關(guān)于 Python json中l(wèi)oad和loads區(qū)別,文章也有簡單的說明它們之間的相同點,然后詳細介紹不同點,需要的朋友可以參考一下文章的具體內(nèi)容
    2021-11-11
  • 詳解用Python處理HTML轉(zhuǎn)義字符的5種方式

    詳解用Python處理HTML轉(zhuǎn)義字符的5種方式

    本文介紹了詳解用Python處理HTML轉(zhuǎn)義字符的5種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • win10下tensorflow和matplotlib安裝教程

    win10下tensorflow和matplotlib安裝教程

    這篇文章主要為大家詳細介紹了win10下tensorflow和matplotlib安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python如何用NumPy讀取和保存點云數(shù)據(jù)

    Python如何用NumPy讀取和保存點云數(shù)據(jù)

    這篇文章主要介紹了Python如何用NumPy讀取和保存點云數(shù)據(jù),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Python數(shù)據(jù)傳輸黏包問題

    Python數(shù)據(jù)傳輸黏包問題

    這篇文章主要介紹了Python數(shù)據(jù)傳輸黏包問題,黏包指數(shù)據(jù)與數(shù)據(jù)之間沒有明確的分界線,導(dǎo)致不能正確的讀取數(shù)據(jù),更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04

最新評論

富宁县| 昭平县| 枞阳县| 盐山县| 宾阳县| 元谋县| 汽车| 鞍山市| 仲巴县| 建德市| 彝良县| 库尔勒市| 驻马店市| 康乐县| 凯里市| 龙井市| 南丹县| 兴化市| 铁岭县| 桦南县| 诸暨市| 阿克| 独山县| 江川县| 清丰县| 青岛市| 静海县| 泸定县| 淳安县| 杂多县| 永新县| 军事| 衡东县| 佛教| 饶平县| 二连浩特市| 平阴县| 延安市| 恩平市| 华亭县| 泽库县|