在python中比较(单个小列表)和(列表列表)

时间:2017-05-11 12:31:25

标签: python list

我正在使用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

坐标中的图案出现在输出的第二个位置。 这个输出可以是多行,因为我的列表列表很大。 我很想知道我到底出错的地方,以及如何才能获得正确的输出。

1 个答案:

答案 0 :(得分: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)]