0

所以我有这个术语列表

[('GO:0090141', 1), ('GO:0030308', 1), ('GO:0000266', 1), ('GO:0016881', 1), ('GO:0031307', 1)]
[('GO:0050681', 1), ('GO:0031491', 1), ('GO:0008270', 1), ('GO:0003677', 1), ('GO:0070936', 1)]
[('GO:0050681', 1), ('GO:0031491', 1), ('GO:0008270', 1), ('GO:0003677', 1), ('GO:0070936', 1)]
[('GO:0050681', 1), ('GO:0031491', 1), ('GO:0008270', 1), ('GO:0003677', 1), ('GO:0070936', 1)]
[('GO:0016055', 1), ('GO:0016363', 1), ('GO:0008270', 1), ('GO:0003676', 1), ('GO:0003677', 1)]
[('GO:0016607', 1), ('GO:0016605', 1), ('GO:0006351', 1), ('GO:0005515', 1), ('GO:0016925', 1)]
[('GO:0045842', 1), ('GO:0000781', 1), ('GO:0019789', 1), ('GO:0007067', 1), ('GO:0007049', 1)]
[('GO:0016607', 1), ('GO:0016605', 1), ('GO:0006351', 1), ('GO:0005515', 1), ('GO:0016925', 1)]
[('GO:0006457', 1), ('GO:0019221', 1), ('GO:0000087', 1), ('GO:0010827', 1), ('GO:0042405', 1)]
[('GO:0003676', 1), ('GO:0008270', 1), ('GO:0019789', 1)]
[('GO:0019221', 1), ('GO:0050681', 1), ('GO:0019899', 1), ('GO:0008270', 1), ('GO:0003676', 1)]
[('GO:0008022', 1), ('GO:0019048', 1), ('GO:0019899', 1), ('GO:0016881', 1), ('GO:0045202', 1)]
[('GO:0008022', 1), ('GO:0019048', 1), ('GO:0019899', 1), ('GO:0016881', 1), ('GO:0045202', 1)]
[('GO:0016881', 1), ('GO:0016874', 1), ('GO:0019789', 1)]

我怎样才能得到一个列表只是'GO'信息而不得到'1'....所以我只想要GO:000221,GO:000241等......你也能帮我获得GO术语的频率。 ..etc ......就像 GO:0008270 ......它在我的列表中出现了 7 次

4

3 回答 3

2

您有一些元组列表,因此您可以使用列表推导提取每个元组的第二个元素(假设您的列表称为l):

 g = [e[0] for e in l]

一旦您有了GO术语列表,您就可以使用例如(参见https://stackoverflow.com/a/893499)来获取它们的频率,

 from collections import Counter
 freqs = Counter(g)
于 2013-03-18T01:03:12.407 回答
1

list_of_GO = [item[0] for item in old_list]

你所拥有的是list2- tuples (GO:XXX, 1)。上面的列表推导式只使用GO:XXXold_list 中每个元组的第一项()构建新列表。

似乎您有一堆列表,而不仅仅是一个列表。我们可以看到更多你的代码吗?

计算你的代码的频率,你可以使用collections.Counter或者你可以自己计算事情,通过做list.count(item)

于 2013-03-18T01:01:32.680 回答
0

假设数据是按“行”设置的,可以这么说,您可以使用模块中的Counter对象collections

>>> from collections import Counter
>>> counter = Counter()
>>> data = [
        # Each row of data listed above
        [('GO:0090141', 1), ('GO:0030308', 1), ('GO:0000266', 1), ('GO:0016881', 1), ('GO:0031307', 1)],
        # Etc...
>>> for row in data:
...     counter.update(x[0] for x in row)
...
>>> print counter
Counter({'GO:0008270': 6, 'GO:0050681': 4, 'GO:0003677': 4, 'GO:0016881': 4, 'GO
:0019899': 3, 'GO:0031491': 3, 'GO:0003676': 3, 'GO:0070936': 3, 'GO:0019789': 3
, 'GO:0008022': 2, 'GO:0019221': 2, 'GO:0045202': 2, 'GO:0016607': 2, 'GO:001660
5': 2, 'GO:0019048': 2, 'GO:0016925': 2, 'GO:0006351': 2, 'GO:0005515': 2, 'GO:0
045842': 1, 'GO:0006457': 1, 'GO:0030308': 1, 'GO:0000266': 1, 'GO:0000087': 1,
'GO:0031307': 1, 'GO:0007067': 1, 'GO:0007049': 1, 'GO:0090141': 1, 'GO:0016363'
: 1, 'GO:0000781': 1, 'GO:0016874': 1, 'GO:0016055': 1, 'GO:0010827': 1, 'GO:004
2405': 1})
于 2013-03-18T01:06:01.243 回答