我有一个列表对列表,例如[['0.0', 'AAA'], ['0.0', 'AAC'], ['0.2', 'BBB']]
我想根据第一个位置的值截断列表。因此,在此示例中,我只想保留[['0.0', 'AAA'], ['0.0', 'AAC']]
,因为两个值均为零。
我试图将其作为[s,c if s == min_score for s,c in this_amino]
的列表理解,其中this_amino
是上述格式的列表。
答案 0 :(得分:3)
你很亲密。只是错误顺序的几个部分
[[s, c] for s, c in this_amino if s == min_score]
答案 1 :(得分:1)
>>> L = [['0.0', 'AAA'], ['0.0', 'AAC'], ['0.2', 'BBB']]
>>> [subl for subl in L if subl[0] == 0.0]
[]
>>> [subl for subl in L if subl[0] == '0.0']
[['0.0', 'AAA'], ['0.0', 'AAC']]
如果您的列表是根据index-0排序的,并且第一个子列表的index-0是min_score
,那么itertools.takewhile
FTW!
>>> min_score = '0.0'
>>> list(itertools.takewhile(lambda subl:subl[0]==min_score, L))
[['0.0', 'AAA'], ['0.0', 'AAC']]