2017-05-11 72 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很高興聽到這個消息,如果這是正確答案,請將其標記爲未來用戶的正確答案 –