Hyppää sisältöön

Standardikirjaston vaativuus

Pythonin standardikirjasto tarjoaa pitkälle optimoituja tietorakenteita ja algoritmeja yleisiin tehtäviin.

Keskeiset kokoelmat

  • Collections - deque, namedtuple, defaultdict, OrderedDict, ChainMap, Counter
  • Itertools - Tehokkaita silmukka- ja iteraattorityökaluja
  • Heapq - Kekojono-operaatiot
  • Bisect - Binäärihaku ja -lisäys

Funktionaaliset työkalut ja apuvälineet

  • Functools - Korkeamman kertaluvun funktiot ja muistiinpano
  • JSON - JSON-sarjallistus ja -jäsennys

Haku ja järjestäminen

Moduuli Tarkoitus Aika
bisect Binäärihaku järjestetyistä listoista O(log n)
heapq Keko-operaatiot O(log n)
sorted() Järjestää minkä tahansa iteroituvan O(n log n)

Usein käytetyt

Collections-moduuli

from collections import deque, defaultdict, Counter

# deque: Fast append/prepend
d = deque([1, 2, 3])
d.appendleft(0)  # O(1)

# defaultdict: Auto-default values
d = defaultdict(list)
d[key].append(value)  # Key created if missing

# Counter: Count items
c = Counter(['a', 'a', 'b'])
c['a']  # Returns 2

Heapq-moduuli

import heapq

# Min heap operations
heap = [3, 1, 4, 1, 5]
heapq.heapify(heap)  # O(n)
heapq.heappop(heap)  # O(log n)
heapq.heappush(heap, 2)  # O(log n)

Bisect-moduuli

import bisect

# Binary search in sorted lists
arr = [1, 3, 3, 3, 5]
bisect.bisect_left(arr, 3)  # O(log n)
bisect.insort(arr, 4)  # O(n) - must shift

Tietorakenteiden pikataulukko

Tyyppi Lisäys loppuun Lisäys alkuun Haku Sisältää
list O(1)* O(n) O(1) O(n)
deque O(1) O(1) O(n) O(n)
heapq O(log n) - O(1) pienin O(n)
set - - - O(1)
dict - - O(1) O(1)

Versiokohtaiset kohokohdat

  • Python 3.7+: dict-lisäysjärjestys säilyy
  • Python 3.8+: Sijoituslausekkeet (mursuoperaattori)
  • Python 3.10+: Hahmontunnistus dataluokkien kanssa

Katso myös