2014-02-10 67 views
0

我的输出看起来像的Python:在列表计算的数字

100010 
101010 
101001 
None 
None 
None 

对于节目的下一部分,我需要数位序列的数量。例如,这应该是3.我该怎么做。该计划的第一部分基本上产生一个随机二进制序列(代表寄生虫基因组),而没有一个意味着寄主没有寄主。这些是随机生成的。 (当我每次运行程序时,这可能会有所不同)。我只需要计算有多少寄生虫在那里。这应该在Python中完成。

+3

什么生成该输出的代码?请用它编辑帖子。 – Christian

+0

https://stackoverflow.com/questions/21617079/python-help-in-organizing-the-output-in-colums:这里是代码的链接 – user3281911

回答

0
In [2]: L = [100010, 101010, 101001, None, None, None] 

In [3]: sum(1 for _ in itertools.takewhile(lambda n: n is not None, L)) 
Out[3]: 3 
0

如果您收集所有输出到像这样的列表:

collection = ['100010', '101010', '101001', None, None, None] 

您可以使用列表中理解创建一个新的列表:

parasites = [item for item in collection if item is not None] 

,这将给你列表['100010', '101010', '101001'] 。然后你就可以找到这个列表的长度给你的寄生虫数量:

len(parasites) 

,让你3在这种情况下。

+0

https://stackoverflow.com/questions/21617079/python -help-in-organizing-column-output-in-colums我有我的编程的一部分在这里,我正试图适应它在这个代码。 – user3281911

1

使用generator expressionsum

>>> lst = [1000010, 101010, 101001, None, None, None] 
>>> sum(x != None for x in lst) 
3 

备选:减去的None从总数数量:

>>> len(lst) - lst.count(None) 
3 
1
input = '100010 101010 101001 None None None' 
import string 
wordsList = string.split(input) 
i=0; 
for word in wordsList: 
    if word != 'None' : 
     i= i+1 
print i 

'我' 给你,结果3