如果你想逐行读取文件行,因为你没有那么多的内存,您可以根据需要与国际热核实验堆,如果你的文件是基于线做线性解决方案,否则看这个:
首先,您可以在终端中执行以下 *** 作以生成一些测试文件:
seq 0 3 100 > 3k.txtseq 0 2 100 > 2k.txt
然后运行以下代码:
i1 = iter(open("3k.txt"))i2 = iter(open("2k.txt"))a = int(next(i1))b = int(next(i2))aNotB = []# bNotA = []while True: try: if a < b: aNotB += [a] a = int(next(i1, None)) elif a > b: # bNotA += [a] b = int(next(i2, None)) elif a == b: a = int(next(i1, None)) b = int(next(i2, None)) except TypeError: if not b: aNotB += list(i1) break else: # bNotA += list(i1) breakprint(aNotB)
输出:
[3、9、15、21、27、33、39、45、51、57、63、69、75、81、87、93、99]如果您同时想要aNotB和bNotA的结果,则可以取消注释这两个线。
时间与Andrej Kesely的答案进行比较:
$ seq 0 3 1000000 > 3k.txt$ seq 0 2 1000000 > 2k.txt$ time python manual_iter.py python manual_iter.py 0.38s user 0.00s system 99% cpu 0.387 total$ time python heapq_groupby.py python heapq_groupby.py 1.11s user 0.00s system 99% cpu 1.116 total
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)