2017-05-11 73 views
0

我正在使用python 3.6。我有一个列表coordinates = [101758584, 101837149, 101844851]和另一个列表rows = [['1', '36933096', 'CSF3R', 'chr1:g.36933096T>C', 'Pathogenic', 'Tarceva\n'], ['2', '25463483', 'DNMT3A', 'chr2:g.25463483G>A', 'Pathogenic', 'Tarceva\n'], ['2', '25469502', 'DNMT3A', 'chr2:g.25469502C>T', 'risk factor', 'Iressa\n']].... and this list goes on。我想检查坐标中存在的数字是否存在于行列表中。 到目前为止,我曾尝试是 -在python中比较(单个小列表)和列表(列表)

coordinates = [101758584, 101837149, 101844851] 
rows = [['1', '36933096', 'CSF3R', 'chr1:g.36933096T>C', 'Pathogenic', 'Tarceva\n'], ['2', '25463483', 'DNMT3A', 'chr2:g.25463483G>A', 'Pathogenic', 'Tarceva\n'], ['2', '25469502', 'DNMT3A', 'chr2:g.25469502C>T', 'risk factor', 'Iressa\n']] 
    for e in rows: 
      if e[0] in coordinates: 
       chromo_final.append(e) 

     print(chromo_final) 

这个输出是一个空列表。 ,我试过的第二件事是 -

chromo_final=[x for x in rows if x[0] in coordinates] 
print(chromo_final) 

即使这个代码给出了一个空的列表。输出的 一个实例是 -

7 101755060 CUX1 chr7:g.101755060A>G Likely pathogenic Cotellic 

图案中的坐标存在于输出的第二位置。 这个输出可以有很多行,因为我的列表清单很大。 我很想知道我究竟在哪里出错,也该如何才能得到正确的输出。

+0

您是否尝试过使用任何biopython模块? –

+0

@ K.Land_bioinfo:我无法使用任何模块,也无法使用任何联系人,因此我需要更通用的方式来执行操作。 – Srk

回答

1

一个简单的方法是使用list comprehension,有一点需要指出的是数据类型的coordinatesrows[1]是不同的,而且你的坐标是index-1所以不是x[0]使用x[1]

>>> [i for i in rows for j in coordinates if i[1] == str(j)] 
+0

完美!非常感谢! – Srk

+0

@Srk很高兴听到这个消息,如果这是正确答案,请将其标记为未来用户的正确答案 –