Python:解析数组中大表的第一列的最快方法
所以我有两个非常大的表要比较(9列,约3000万行) 第一列包含我的行的标识符,我想知道哪些行只在sam1中 这是我目前正在使用的代码,但需要很长时间。有没有办法加快速度 我已经试着通过将列表转换为集合来加快速度,但是没有太大的区别 编辑:现在它运行得快多了,但现在我必须从输入表中取出整行内容,并将具有独占ID的行写入输出文件。我该如何快速处理这一问题?一些建议:Python:解析数组中大表的第一列的最快方法,python,arrays,python-2.7,csv,Python,Arrays,Python 2.7,Csv,所以我有两个非常大的表要比较(9列,约3000万行) 第一列包含我的行的标识符,我想知道哪些行只在sam1中 这是我目前正在使用的代码,但需要很长时间。有没有办法加快速度 我已经试着通过将列表转换为集合来加快速度,但是没有太大的区别 编辑:现在它运行得快多了,但现在我必须从输入表中取出整行内容,并将具有独占ID的行写入输出文件。我该如何快速处理这一问题?一些建议: 与其创建一个列表,然后将其转换为一个集合,不如直接使用集合: sam1_identifiers = set() for line
- 与其创建一个列表,然后将其转换为一个集合,不如直接使用集合:
这可能更节省内存,因为您只有一个集合,而不是列表和集合。这可能会让它快一点 还要注意,我已经更改了变量名–list是Python内置函数的名称,因此您不应该将其用于自己的变量sam1_identifiers = set() for line in reader1: sam1_identifiers.add(line[0])
- 因为您希望查找仅在sam1中的标识符,而不是嵌套的if/for语句,所以只需比较并丢弃在sam1中ID集合中的sam2中找到的任何标识符
甚至sam2_identifiers = set() for line in reader2: sam2_identifiers.add(line[0]) print sam1 - sam2
我怀疑这比嵌套循环快sam2_identifiers = set() for line in reader2: sam1_identifiers.discard(line[0]) print sam1_identifiers
- 也许我遗漏了一些东西,但是你不看看sam2每一行的每一列吗?仅仅查看
作为标识符就足够了吗,就像sam1一样行[0]
行[0]
就足够了。请看一下我的问题我添加了一个附加问题。
sam2_identifiers = set()
for line in reader2:
sam1_identifiers.discard(line[0])
print sam1_identifiers