Also jetzt habe ich 4 if/elif/else-Anweisungen fest codiert. Gibt es dort einen dynamischeren Weg dies zu tun? Zum Beispiel, wenn ich eine 10 oder Eve 40 Fusion machen wollte?Gibt es eine Möglichkeit, diese "n-way merge" in Python zu vereinfachen
#4-way merge sort, sorted page files
outfile="fullsorted.txt"
of=open(outfile,"w")
f1=open("temp0-sorted.txt","r")
f2=open("temp1-sorted.txt","r")
f3=open("temp2-sorted.txt","r")
f4=open("temp3-sorted.txt","r")
f1_line=f1.readline()
f2_line=f2.readline()
f3_line=f3.readline()
f4_line=f4.readline()
while len(f1_line)>0 and len(f2_line)>0 and len(f3_line)>0 and len(f4_line)>0:
if f1_line < f2_line and f1_line < f3_line and f1_line < f4_line and len(f1_line)>0:
of.write(f1_line)
f1_line=f1.readline()
elif f2_line < f3_line and f1_line < f4_line and len(f2_line)>0:
of.write(f2_line)
f2_line=f2.readline()
elif f3_line < f4_line and len(f3_line)>0:
of.write(f3_line)
f3_line=f3.readline()
else:
of.write(f4_line)
f4_line=f4.readline()
of.close()
Stellen Sie sich zunächst eine Liste vor: 'l = [f1, f2, f3 ...]'. – user2864740
@DSM: Benötigt kein modernes Python; 'heapq.merge' gibt es seit 2.6. – ShadowRanger
@ShadowRanger: ah, du hast Recht! Was die Vereinfachung anbelangt, wird dies wahrscheinlich die beste sein. – DSM