我有两个数字列表:
parasite genome [1,1,1,0,1,0,1,0,1,1]
host genome [1,1,0,0,1])
我试图找到感染从寄生虫转移到寄主的机会。传播与寄生虫和宿主基因组中1的匹配成正比。在这个例子中它是3/10:
我已经写下了程序的一部分,但我仍然坚持如何计算出1的匹配数。有人可以帮帮我吗?
host_genome_length = 10
parasite_genome_length = 5
maximum_infection_rate=1.0
def infection rate(host_genome, parasite_genome):
if host_genome_length > parasite_genome_length:
return maximum_infection_rate *number of matches'of 1?(confused here) / float (host_genome_length)
else:
return maximum_infection_rate * number of matches'of 1?(confused here) / float (parasite_genome_length)
print infection_rate([1,1,1,0,1,0,1,0,1,1], [1,1,0,1,1])
答案 0 :(得分:4)
您可以zip
基因组和宿主检查同一位置的元素:
>>> genome = [1,1,1,0,1,0,1,0,1,1]
>>> host = [1,1,0,0,1]
>>> print sum(1 for g, h in zip(genome, host) if g and h)
3
>>> # or
>>> print sum(g * h for g, h in zip(genome, host))
3