Optimierung
Verfasst: Dienstag 6. Juli 2010, 16:07
huhu!
Mein Programm braucht zu lange, um durchzulaufen.
Da die Optimierung meines Codes doch vielverspechend ist, bin ich ihn jetzt mal durchgegangen und habe die ersten Fragen aufgeschrieben:
##########################################################
Ich habe eine Textdatei, deren Inhalt ich in ein set laden will.
In jeder Zeile der Textdatei steht ein Wort; jedes Element des sets soll ein Wort enthalten.
Dazu muss ich die Enter-Zeilen entfernen.
Dies habe ich bis jetzt so gemacht:
Wie kann ich die Enter-Zeilen direkt aus dem Set entfernen und kann mir den Umweg über die Liste sparen?
##########################################################nächste Frage
Ich habe eine Bilddatei und will in einem 10-mal-10-Pixel-Rechteck dieser Datei für jeden Pixel eine Fallunterscheidung durchführen.
Dies mache ich bis jetzt so:
BlackJack deutete dann aber eine Möglichkeit an, dies mit der crop()-Methode schneller hinzubekommen.
Weiter als das bin ich aber nicht gekommen:
Wie komme ich jetzt an die einzelnen Pixel ran und kann mit ihnen eine Fallunterscheidung durchführen?
##########################################################nächste Frage
Ich möchte eine rückwärtszählende Schleife erstellen.
liefert ja die Zahlen 0,1,2,3,4.
Nun will ich aber die Zahlen 4,3,2,1,0 haben.
Dies habe ich bis jetzt damit gelöst:
Wie geht das, ohne alle Elemente einzeln aufzuzählen?
geht genauso wenig wie
######
Ich verwende sehr oft Schleifen, die dann aber zu kleinen Ungetümen ausarten:
Diese Schleife soll die Position einer "9" herausfinden, aber die Orgranisationsstruktur der Ursprungsliste beibehalten.
Gibt es irgendwelche Tipps, um solche Verschachtelungen besser zu gestalten?
Mein Hauptproblem ist, dass ich nicht das machen kann:
sonder immer eine zusätzliche Variable einführen muss:
##########################################################
Ich würde mich freuen, wenn ihr mir auch dabei weiterhelfen könntet.
Mit EyDu's Hinweis, dass in einigen Fällen Sets besser als Listen sind, konnte ich mein Programm ja schon extrem verschnellern
Gruß
Paul
Mein Programm braucht zu lange, um durchzulaufen.
Da die Optimierung meines Codes doch vielverspechend ist, bin ich ihn jetzt mal durchgegangen und habe die ersten Fragen aufgeschrieben:
##########################################################
Ich habe eine Textdatei, deren Inhalt ich in ein set laden will.
In jeder Zeile der Textdatei steht ein Wort; jedes Element des sets soll ein Wort enthalten.
Dazu muss ich die Enter-Zeilen entfernen.
Dies habe ich bis jetzt so gemacht:
Code: Alles auswählen
datei=open(pfad)
a=datei.readlines()
for i in range(len(a)):
a[i] = a[i].replace('\n','')
a=set(a)
##########################################################nächste Frage
Ich habe eine Bilddatei und will in einem 10-mal-10-Pixel-Rechteck dieser Datei für jeden Pixel eine Fallunterscheidung durchführen.
Dies mache ich bis jetzt so:
Code: Alles auswählen
img=Image.open(pfad)
a=list()
y=0
for h in range(10):
x=0
y+=1
for g in range(10):
x+=1
pix=img.getpixel((x,y))
if pix==(0,0,0):
a.append(1)
else:
a.append(0)
BlackJack deutete dann aber eine Möglichkeit an, dies mit der crop()-Methode schneller hinzubekommen.
Weiter als das bin ich aber nicht gekommen:
Code: Alles auswählen
box = (0,0, 10, 10)
b = img.crop(box)
##########################################################nächste Frage
Ich möchte eine rückwärtszählende Schleife erstellen.
Code: Alles auswählen
for i in range(5):
Nun will ich aber die Zahlen 4,3,2,1,0 haben.
Dies habe ich bis jetzt damit gelöst:
Code: Alles auswählen
for i in [4,3,2,1,0]:
Code: Alles auswählen
for i in range(4,0)
Code: Alles auswählen
for i in range(0,4,-1).
Ich verwende sehr oft Schleifen, die dann aber zu kleinen Ungetümen ausarten:
Code: Alles auswählen
a=[[[1,2,9,4],[5,9,7,8],[9,10,11,12]],[[9,10,11,12],[5,6,9,8],[1,2,9,4]]]
b=list()
b1=list()
for i in range(len(a)):
a1=a[i]
for h in range(len(a1)):
a2=a1[h]
for g in range(len(a2)):
if a2[g]==9:
b1.append(g)
break
b.append(b1)
b1=list()
Gibt es irgendwelche Tipps, um solche Verschachtelungen besser zu gestalten?
Mein Hauptproblem ist, dass ich nicht das machen kann:
Code: Alles auswählen
for i in range(len(a)):
for g in range(len(a[i])):
print a[i][g]
Code: Alles auswählen
for i in range(len(a)):
a1=a[i]
for g in range(len(a1)):
print a1[g]
Ich würde mich freuen, wenn ihr mir auch dabei weiterhelfen könntet.
Mit EyDu's Hinweis, dass in einigen Fällen Sets besser als Listen sind, konnte ich mein Programm ja schon extrem verschnellern

Gruß
Paul