Collections#
courant
list — méthodes#
l = [3, 1, 2]
l.append(4); l.extend([5, 6]); l.insert(0, 9)
l.remove(9) # 1ère occurrence, ValueError si absent
l.pop(); l.pop(0) # retire et renvoie (dernier / index donné)
l.index(2); l.count(2)
l.sort(key=None, reverse=False); l.reverse(); l.copy(); l.clear()
dict — méthodes#
d = {"a": 1, "b": 2}
d.get("a", 0); d.setdefault("c", 0)
d.pop("a", None); d.popitem() # retire le dernier élément inséré
d.update({"b": 20}); d.copy(); d.clear()
d.keys(); d.values(); d.items()
{k: v for k, v in d.items() if v > 0} # filtrage
set — méthodes#
s = {1, 2, 3}
s.add(4) # ajoute un élément
s.update([5, 6]) # ajoute plusieurs éléments
s.discard(9) # retire si présent, silencieux sinon
s.remove(5) # retire, lève KeyError si absent
s.pop() # retire et renvoie un élément arbitraire (set non ordonné)
s.clear()
s.union(t); s.intersection(t); s.difference(t); s.symmetric_difference(t)
s.issubset(t); s.issuperset(t); s.isdisjoint(t)
Piège
{} crée un dictionnaire vide, pas un ensemble vide : utiliser set().
collections.Counter#
from collections import Counter
c = Counter("abracadabra")
c.most_common(2) # [('a', 5), ('b', 2)]
c["a"] # 5
c.update("aaa")
collections.defaultdict#
from collections import defaultdict
groupes = defaultdict(list)
for nom in ["ana", "bo", "aya"]:
groupes[nom[0]].append(nom) # pas de KeyError, liste vide créée au besoin
collections.namedtuple#
from collections import namedtuple
Point = namedtuple("Point", ["x", "y"])
p = Point(1, 2)
p.x; p.y; p[0]
collections.deque avancé#
from collections import deque
d = deque([1, 2, 3])
d.appendleft(0); d.append(4)
d.popleft(); d.pop()
# O(1) aux deux extrémités, contrairement à list.insert(0, x) qui est O(n)