Lær Python
Datastrukturer
Brug lists, tuples, sets, dictionaries, queues og heaps rigtigt.
Python har få indbyggede datastrukturer, men valget mellem dem påvirker både læsbarhed og hastighed.
De fire vigtigste
| Type | Bevarer rækkefølge | Kan ændres | God til |
|---|---|---|---|
list | Ja | Ja | En ordnet samling |
tuple | Ja | Nej | Faste værdier og koordinater |
set | Nej | Ja | Unikke værdier og hurtige opslag |
dict | Ja | Ja | Nøgler koblet til værdier |
users = ["Ada", "Linus", "Guido"]
point = (12, 8)
permissions = {"read", "write"}
profile = {"name": "Ada", "active": True}Stack og queue
En list fungerer fint som stack. Til en kø bruger du deque, fordi fjernelse fra starten af en list er langsom.
from collections import deque
stack = []
stack.append("job-1")
current = stack.pop()
queue = deque(["job-1", "job-2"])
queue.append("job-3")
current = queue.popleft()Counter, defaultdict og heap
from collections import Counter, defaultdict
import heapq
counts = Counter("mississippi")
groups = defaultdict(list)
groups["admin"].append("Ada")
priorities = [(20, "backup"), (5, "alert"), (10, "email")]
heapq.heapify(priorities)
priority, task = heapq.heappop(priorities)Kompleksitet i praksis
- Opslag i
dictogseter normalt O(1). - Søgning i en
lister O(n). - Sortering er O(n log n).
list.pop(0)er O(n), mensdeque.popleft()er O(1).
Øvelse
Byg en lille jobkø. Et job har ID, prioritet og status. Undgå dubletter med et set, opbevar jobs i en dictionary, og vælg næste job med en heap.