2014-01-28 5 views
0

У меня есть два списка чисел:Как найти совпадающие значения в двух списках?

parasite genome [1,1,1,0,1,0,1,0,1,1] 
host genome  [1,1,0,0,1]) 

Я пытаюсь найти вероятность заражения получать передается от паразита-хозяина. Передача прямо пропорциональна сопоставлению 1 в геноме паразита и хозяина. В данном примере это 3/10:

  • 3 потому что позиции 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]) 
+1

Ваш вопрос нуждается лучше, более описательное название. Он также может использовать немного очистки грамматики. –

+2

Вы просто заботитесь о количестве совпадений с самого начала или в любом месте, где соответствует шаблон? – Joel

ответ

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 
Смежные вопросы