什么是简单合并文件的最快捷方式,什么是分割数组的最快捷方式?
问题描述:
在删除重复行的同时,将文件列表和输出文件的名称合并为单个文件的最快捷方式是什么? 类似于什么是简单合并文件的最快捷方式,什么是分割数组的最快捷方式?
cat file1 file2 file3 | sort -u> out.file
in python。
宁愿不使用系统调用。
AND:
什么是在Python到X块(名单列表)拆分列表尽可能相等,最快捷的方式? (给定一个列表和X.)
答
对于第一:
lines = []
for filename in filenames:
f = open(filename)
lines.extend(f.read().split('\n')
f.close()
lines = list(set(lines)) #remove duplicates
f = open(outfile_name, 'w')
f.write(''.join(lines))
假设文件是一个合理的长度,因为所有从文件中的数据将被同时存储在存储器中。如果要保留排序行sort
的副作用,则只需在写入文件之前添加lines.sort()
即可。
而第二个:
step_size = len(orig_list)/num_chunks
split_list = [orig_list[i:i+step_size] for i in range(0, len(orig_list), step_size)]
答
第一:
lines = set()
for filename in filenames:
with open(filename) as inF:
lines.update(inF)
with open(outfile, 'w') as outF:
outF.write(''.join(lines))
二:
def chunk(bigList, x):
chunklen = len(bigList)/x
for i in xrange(0, len(bigList), chunklen):
yield bigList[i:i+chunklen]
listOfLists = list(chunk(bigList, x))
大块应保持在原来的列表中的顺序。这里的平等是指大小。所以对于X = 2,LIST =(x1,x2,x3,x4)被分成((x1,x2),(x3,x4))。 – cokacola 2010-10-08 19:28:03
最快,你的意思是写的最快还是最快?另外,你是否想要保留行顺序? – JoshD 2010-10-08 19:30:06
你应该把这个问题分成两部分 - 你所要求的东西不相互关联,需要分开。 – 2010-10-08 19:36:11