MrFaws Docs
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

TypeBevarer rækkefølgeKan ændresGod til
listJaJaEn ordnet samling
tupleJaNejFaste værdier og koordinater
setNejJaUnikke værdier og hurtige opslag
dictJaJaNø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 dict og set er normalt O(1).
  • Søgning i en list er O(n).
  • Sortering er O(n log n).
  • list.pop(0) er O(n), mens deque.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.

On this page