0
我有什么: 我有一个列表,nodes
。每个列表具有以下结构:从列表中提取行给出两个条件
nodes = [[ID, number 1, number 2, number 3],[...]]
我也有列出称为sampleID
和sampleID2
其中每个列表可以仅具有等于属于包含在总IDs
的一个子集的ID
数单数据的其他两个列表nodes
:
sampleID = [[IDa],[...]]
sampleID2 = [[IDb],[...]], len(sampleID) + len(sampleID2) <= len(nodes)
在某些情况下,这些名单,也可以像:
sampleID = [[IDa1,IDa2, IDa3,...],[...]]
我想要什么: 鉴于上述三个列表,我想在一个快速的方式得到包含其中IDi==ID
,I = A,B名单第四列表:
extractedlist = [[ID, number 1, number 2, number 3],[...]], len(extractedlist) = len(sampleID) + len(sampleID2)
我的代码: 非常基本的,它的工作原理,但它需要花费大量的时间来计算:
import itertools
for line in nodes[:]:
for line2,line3 in itertools.izip(sampleID[:],sampleID2[:]):
for i in range(0,len(line2)):
if line2[i]==line[0]:
extractedlist.append([line[0], line[1], line[2], line[3]])
for j in range(0,len(line3)):
if line3[j]==line[0]:
extractedlist.append([line[0], line[1], line[2], line[3]])
它的工作原理。但是,如果不是'sampleID = [[IDa],[...]]'sampleID'是'sampleID = [[IDa1,IDa2,IDa3,...],[...]]',它也工作? 'sampleID'每行通常可以有一个ID,但在某些情况下,每行最多可以有16个ID。谢谢 – jpcgandre
是的,它是有效的,因为来自list sampleID的所有值都在扩展final_ids,因此sampleID中的任何类型列表都可以工作。如果SampleId是这样的 'sampleID = [[IDa1,IDa2,IDa3,... Id16],[Id17,Id18],[ID19],[Id20,Id21,... Id31]]' Then也将其工作:) –