16 lines
733 B
Markdown
16 lines
733 B
Markdown
|
|
Gegeben ist eine ineffiziente Python-Funktion, die für eine Liste von Wörtern die Häufigkeit jedes Wortes zählt und dabei für jedes Wort erneut die gesamte Liste durchläuft:
|
||
|
|
|
||
|
|
```python
|
||
|
|
def count_words(words):
|
||
|
|
counts = {}
|
||
|
|
for w in words:
|
||
|
|
counts[w] = 0
|
||
|
|
for x in words:
|
||
|
|
if x == w:
|
||
|
|
counts[w] += 1
|
||
|
|
return counts
|
||
|
|
```
|
||
|
|
|
||
|
|
Schreibe eine effiziente Variante, erkläre die Verbesserung der Zeitkomplexität und zeige mit einem kleinen Benchmark (z. B. `timeit`) den Unterschied bei größeren Eingaben.
|
||
|
|
|
||
|
|
Behandle dabei sinnvolle Randfälle: leere Liste, Groß-/Kleinschreibung und anhängende Satzzeichen (was soll als „dasselbe Wort" gelten?). Triff dazu eine begründete Annahme.
|