hohe Laufzeit bei Programm

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
becher
User
Beiträge: 1
Registriert: Freitag 8. März 2013, 17:10

Hallo,

ich habe mich in eurem Forum angemeldet, nachdem ich hier schon einige Lösungsvorschläge zu anderen Problemen, die ich hatte, gefunden habe, weil ich Probleme mit einem Programm habe.

Ich habe einen sehr großen Text mit mehr als 250.000 Wörtern und ich möchte in diesem Text die Wörter vergleichen, ob sie mehrmals im Text vorkommen. Dazu finde ich aber keine Lösung, die einigermaßen schnell läuft (alles hat bisher über 1 Stunde gedauert). Das Problem liegt an der doppelten for-Schleife, die ich benutze, um ein Wort aus dem Text rauszusuchen und das dann mit den anderen Wörtern im Text vergleiche.
Es dauert sowohl mit Listen, Dictionarys als auch mit Mengen so lange, weswegen ich mit meinem Latein echt am Ende bin.
Funktioniert das überhaupt in einem passablen Zeitrahmen mit einer doppelten for-schleife oder geh ich ganz falsch an die Sache ran?

Vielen Dank für die Hilfe =)
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Erstmal herzlich Willkommen im Forum!

Das ist in python ein 2 Zeiler:

Code: Alles auswählen

from collections import Counter
words = ["wort1", "wort2", "wort1"]
counter = Counter(words)
print words

Code: Alles auswählen

Counter({'wort1': 2, 'wort2': 1})
Für mehr Information über Counter: http://docs.python.org/2/library/collec ... ns.Counter

Unter der Haube wird ein Dictionary (hash table) benutzt. Eine solche grundlegende Pythonklasse solltest du so schnell wie möglich in einem Tutorial nacharbeiten. Falls das immer noch nicht klappen sollte, wäre es gut wenn du mal dein Quelltext hier posten würdest. Gegebenenfalls lässt sich auch was mit PyPy machen.

Grüße,
anogayales
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Am besten zeigst du mal deinen Quelltext. Ich kann mir nicht vorstellen fuer was du eine verschachtelte (ich nehme an das meinst du mit doppelt) brauchst.
BlackJack

@becher: Falls Du eine verschachtelte Schleife hast bei der für jedes Wort noch einmal jedes Wort durchlaufen wird, dann kann man sich ja leicht ausrechnen, dass das was in der inneren Schleife passiert 250.000×250.000 = 62.500.000.000 mal ausgeführt wird.
Antworten