2013-03-01 5 views
-1

Я хочу создать вывод с использованием python в порядке убывания значения «f». То есть самое большое значение «f», рассчитанное программой, должно быть напечатано первым и так далее ...Печать в порядке убывания Python

Вот код.

q=[-5.23,-0.22,3.35,-3.9,0.59,5.76,-3.27,2.95,0.68,-2.65,2.6,1.87,-0.68,2.77,0,-3.92,0,0.06,4.17]; 
w=[15.1,1.11,-0.85,0.00,-0.47,-4.00,3.63,-2.29,-1.96,1.16,0.00,-4.09,-2.77,-0.27,-2.14,1.86,0,2.32,-2.61]; 
e=[1.04,0,0,3.91,-0.53,-1.75,1.88,1.88,-0.22,2.81,0,-0.91,1.96,2.62,-2.67,0,0.06,-1.95,0.58,0]; 
r=[-6.8,0,-2.73,-1.81,1.38,1.76,0,-1.79,4.22,-1.3,-4.13,4.62,0,-0.66,6.2,-1.69,3.12,0.93,0]; 
import re 
i=0;s=0;f=0;k=0;l=0;c=0; 
regex = re.compile("(?=(AA[TCG].{20}))") 
Str1=raw_input('get::') 
l=regex.findall(xy) 
for x in range(len(l)): 
    kl=l[x];c=kl[2:21];n=len(c);rest=kl[21:] 
    while(i<n): 
      f=0 
      if(c[i]=='A'): 
       s=q[i]; 
      elif(c[i]=='G'): 
       s=w[i];    
      elif(c[i]=='C'): 
       s=e[i];    
      elif(c[i]=='T'): 
       s=r[i]; 
      i+=1 
      f+=s  
      GC=c.count('G')+c.count('C') 
      GC_p=GC*100/19 
      if(f>0 and GC_p>=45 and GC_p<=55):  
       print '======================================================================' 
       print 'AA-'+c+'-'+rest 
       print 'Score=',f 
       print 'GC%=',float(GC_p) 
       print 'SENSE RNA=AA-'+c[::-1]+'-'+rest 
       print 'ANTI-SENSE RNA=AA-'+c.replace('A','U').replace('C','G').replace('G','C').replace('U','A')+'-'+rest 
       print '=======================================================================' 
       print ('\r\n') 
      GC=0 
      k+=1 
      i=0 

h=raw_input('Enter to continue') 

Я попытался добавить значение f в список и отсортировать его в порядке убывания. Но он только ставит значение f в список и печатает его [''], как это, и все это не сортируется.

Мне нужна помощь в этом отношении. Спасибо!

+1

И вы хотите, чтобы написать код для вас? Что вы * попробовали? – Cairnarvon

+0

@Cairnarvon Я попытался использовать значения f в списке, используя append и отсортировать их .. но это не сортирует все. –

+0

Необходимо также исправить форматирование. – Hoopdady

ответ

1

Как показано в вопросе в настоящий момент, отображается код, вычисляющий одно значение f. Поскольку код не вычисляет список объектов с разными значениями f, я не могу дать конкретный пример, но предположим, что вы создаете список под названием results, содержащий кортежи или объекты, у которых есть элемент или атрибут для f стоимость. Тогда линия, как один из следующих сортирует элементы results в порядке убывания на основе значений f:

results.sort(key=lambda x: -x[f_index]) 
results.sort(key=lambda x: -x.f) 
results.sort(key=lambda x: x.f, reverse=True) 

Используйте первую форму для кортежей, подставляя соответствующее значение вместо f_index. (Например, если третий элемент кортежа равен f, скажем -x[2].) Используйте вторую или третью форму, если вы определяете класс объектов, которые имеют атрибут f. Вы можете использовать -f как ключ (как в первых двух формах) или можете установить reverse=True.

Редактировать: Обратите внимание: ваш код в цикле while(i<n): неуклюжий. Вы можете заменить его следующим образом: Перед for x in range(len(l)): линии, добавьте строку

weights = { 'A': q, 'G': w, 'C': e, 'T': r } 

Затем заменить 12 строк кода из while(i<n): через f+=s с двумя линиями

for i in range(n): 
     f += weights[c[i]][i] 
+0

Спасибо, сэр .. Это помогло !!! –

1

Добавьте это к началу программа:

result = [] 

Заменить print раздел с:

result.append((f, c, rest, GC_p)) 

Затем добавьте это после цикла:

for (f, c, rest, GC_p) in result: 
    print '======================================================================' 
    print 'AA-'+c+'-'+rest 
    print 'Score=',f 
    print 'GC%=',float(GC_p) 
    print 'SENSE RNA=AA-'+c[::-1]+'-'+rest 
    print 'ANTI-SENSE RNA=AA-'+c.replace('A','U').replace('C','G').replace('G','C').replace('U','A')+'-'+rest 
    print '=======================================================================' 
    print ('\r\n') 
+0

Спасибо, сэр! –

Смежные вопросы