Python 빠 른 파일 비교 코드 분석 실현

문제.
만약 에 두 개의 큰 파일 에 대량의 데 이 터 를 저장 했다 면 데 이 터 는 간단 한 문자열 입 니 다.줄 마다 하 나 를 저장 하고 두 파일 의 공통점 과 차이 점 을 어떻게 신속하게 선별 합 니까?아니면 두 파일 의 서로 다른 요 소 를 어떻게 선별 합 니까?
처음에 저 는 가장 간단 한 방법 을 통 해 for 순환 을 이용 하여 하나씩 판단 을 했 습 니 다.시간 복잡 도 는 m 의 n 차 멱 이 었 습 니 다.물론 파일 의 수량 급 이 10 만 또는 백만 이 었 을 때 속 도 는 정말 극점 까지 느 렸 습 니 다.
해결 방법
set()의 different(방법)를 이용 하여 빠르게 비교 할 수 있 습 니 다.두 set 집합 의 차이 점,즉 집합 에 대해 수학 연산 을 하 는 것 입 니 다.
가설:데이터 1 은 858882 개의 기록 을 가지 고 데이터 2 는 360029 개의 기록 을 가지 고 데이터 2 에 존재 하지 않 고 데이터 1 에 존재 하지 않 는 데 이 터 를 신속하게 선택한다.
방법:두 파일 의 데 이 터 를 두 개의 list:data 1 과 data 2 에 읽 은 다음 set(data 2).difference(set(data 1)를 통 해 data 2 와 data 1 의 차 집합 을 가 져 옵 니 다.
다음은 작은 demo 입 니 다.백만 급 에 가 까 운 데 이 터 를 볼 수 있 습 니 다.출장 집 을 비교 하 는 데 1 초 정도 걸 립 니 다.효율 이 보통 높 지 않 습 니 다.

import time
t1 = time.time()
data1 = []
for i in open("inDB.txt","r",encoding="utf-8"):
  i = i.strip("
") i = i.lower() data1.append(i) data2 = [] for i in open("data/18 .filename","r",encoding="utf-8"): i = i.strip("
") 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()
집합 에 원 소 를 첨가 하 다
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기