Kann dieser Code weiter optimiert werden?

Ich verstehe, dass der unten angegebene Code nicht vollständig verstanden wird, es sei denn, ich erkläre meine ganze vorherige und nächste Codezeile. Aber das ist ein Teil des Codes, der so viel Verzögerung in meinem Projekt verursacht und das optimieren möchte. Ich möchte wissen, welcher Codeteil defekt ist und wie könnte dieser ersetzt werden? Ich denke, wenige können sagen, dass die Verwendung dieser Funktion ist schwer verglichen und andere höhere Methode zur Verfügung stehen, um diese Arbeit zu tun

Bitte helfen,

Danke im Voraus

for i in range(len(lists)): save=database_index[lists[i]] #print save #if save[1]!='text0194'and save[1]!='text0526': using_data[save[0]]=save p=os.path.join("c:/begpython/wavnk/",str(str(str(save[1]).replace('phone','text'))+'.pm')) x1=open(p , 'r') x2=open(p ,'r') for i in range(6): x1.readline() x2.readline() gen = (float(line.partition(' ')[0]) for line in x1) r= min(enumerate(gen), key=lambda x: abs(x[1] - float(save[4]))) #print r[0] a1=linecache.getline(str(str(p).replace('.pm','.mcep')), (r[0]+1)) #print a1 p1=str(str(a1).rstrip('\n')).split(' ') #print p1 join_cost_index_end[save[0]]=p1 #print join_cost_index_end gen = (float(line.partition(' ')[0]) for line in x2) r= min(enumerate(gen), key=lambda x: abs(x[1] - float(save[3]))) #print r[0] a2=linecache.getline(str(str(p).replace('.pm','.mcep')), (r[0]+1)) #print a2 p2=str(str(a2).rstrip('\n')).split(' ') #print p2 join_cost_index_strt[save[0]]=p2 #print join_cost_index_strt j=j+1 #print j #print join_cost_index_end #print join_cost_index_strt enter code here 

Hier hat mein database_index ca. 2,50.000 Einträge`

2 Solutions collect form web for “Kann dieser Code weiter optimiert werden?”

 def get_list(file, cmp, fout): ind, _ = min(enumerate(file), key=lambda x: abs(x[1] - cmp)) return fout[ind].rstrip('\n').split(' ') root = r'c:\begpython\wavnk' header = 6 for lst in lists: save = database_index[lst] index, base, _, abs2, abs1, *_ = save using_data[index] = save base = os.path.join(root, base.replace('phone', 'text')) fin, fout = base + '.pm', base + '.mcep' file = open(fin) fout = open(fout).readlines() [next(file) for _ in range(header)] file = [float(line.partition(' ')[0]) for line in file] join_cost_index_end[index] = get_list(file, float(abs1), fout) join_cost_index_strt[index] = get_list(file, float(abs2), fout) 

Nicht:

  1. Umwandlung von String in String mehrfach, wird es ein String bleiben
  2. Konvertieren Sie den Wert innerhalb der Schleife, wenn es außerhalb der Schleife durchgeführt werden könnte
  3. Verwenden Sie Single-Buchstaben für Bedeutungsvariablen
  4. Iterieren über Sequenzen mit range(len(sequence))
  5. Kopieren Sie die Codepakete: Verwenden Sie Funktionen
  6. Benutze jeden Code, ohne zuerst Dokumente zu lesen
  7. Verlassen Sie sich auf SO für psychisches Debugging.
 x1=open(p , 'r') x2=open(p ,'r') 

Warum die gleiche Datei zweimal öffnen? Erwarten Sie, dass es sich ändert?

Python ist die beste Programmiersprache der Welt.