根据值截断列表的排序列表

时间:2013-12-03 01:15:13

标签: python

我有一个列表对列表,例如[['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是上述格式的列表。

2 个答案:

答案 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']]