我正在使用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
列表。我想检查坐标中的数字是否存在于行列表中。
到目前为止,我所尝试的是 -
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 :(得分:1)
一种简单的方法是使用list comprehension
,有一点需要注意的是coordinates
和rows[1]
的数据类型不同,而且你的坐标也是index-1
所以而不是x[0]
使用x[1]
>>> [i for i in rows for j in coordinates if i[1] == str(j)]