Loading...
Python

Structures de données

EISTI

Appuyer pour continuer.

Commandes pour les slides
  • et pour avancer / reculer.
  • espace pour avancer.
  • Ctrl/Command et + or - pour zoomer plus ou moins.
  • N pour afficher / cacher les notes.
  • H pour afficher l'aide.
Listes
Présentation
  • Liste ordonnée d'objets arbitraires
  • Délimitées par des crochets

Création
  • Avec le constructeur : liste1 = list(2, 3, 4); liste2=list()
  • Directement : liste1 = [2, 3, 4]; liste2=[]
Listes
Parcours - while
while (k ‹ len(liste)) :
        print liste[k]
        k += 1

Parcours - for
for (k in liste) :
        print k

Accès
  • Identique à celui des chaînes : liste[5], liste[-2], liste[2:5], liste[-1::-1]
  • Possibilité de modifier directement une liste : liste[2] = 7
Listes
Manipulation
  • Longueur d'une liste : len(liste)
  • Concaténation : opérateur +
  • Ajouter un élément : liste.append(10)
  • Création d'une liste numérique : range()
    • range(stop)
    • range(start, stop [,step])
Listes
Manipulation - Copie
  • ATTENTION : liste2 = liste1
  • Assignation par référence
  • Toute modification dans l'une entrainera également une modification dans l'autre
  • Pour éviter ce phénomène, utiliser le constructeur :
    liste2 = list(liste1)
  • Attention aux manipulations de liste de listes
  • Méthode sûre : deepcopy du module copy
    • import copy
    • l2 = copy.deepcopy(l1)
Listes
Méthodes
  • Répétition : liste*n
  • Extension : liste.append(objet)
  • Insertion : liste.insert(indice, objet)
  • Suppression : liste.pop(indice), liste.remove(objet)
  • Tri : liste.sort()
  • Inversion : liste.reverse()
Liste des méthodes sur les listes
Listes
Module bisect
  • Trouver et insérer un élément dans une liste triée
  • import bisect
  • Trouver une position : bisect.bisect(liste,valeur)
  • Insérer : bisect.insort(liste,valeur)
Listes
Listes en compréhension
  • Création, à partir d'une collection donnée d'éléments, une liste filtrée selon un critère
  • expN for ind in collection [if condition]
  • expN est l'expression nouvelle sous laquelle se mettra l'élément trouvé dans la collection qui, éventuellement, doit satisfaire la condition
››› liste1 = [1, 2, 3, 4]
››› liste2 = [chr(96+e)*e for e in liste1 if e ‹ 4]
››› liste2
['a', 'bb', 'ccc']
Tuples
Présentation
  • Regroupement d'objets arbitraires
  • Taille fixe
  • Délimitées par des parenthèses
  • Les tuples sont similaires aux listes, mais ils ne sont pas modifiables
Tuples
Création
  • t1 = 2, 3, 4
  • t2 = (42, 11, 37)
  • t3 = tuple([5, 6, 7])

Création - 0 ou 1 élément
  • t0 = ()
  • t1 = (42, ) # Notez la présence la virgule à la fin
Tuples
Affectations
  • Dépaqueter un tuple :
    • t = 2, 3, 4
    • a, b, c = t
    • print a, b, c
    • 2, 3, 4
  • Transformer une chaine en tuple :
    • ts = tuple('Toto')
    • print ts
    • ('T','o','t','o')
Tuples
Parcours
  • Identique à celui des listes
    • while
    • for
    • listes en compréhension
Documentation sur les Tuples
Dictionnaires
Présentation
  • Collection non ordonnées de couples ordonnées du type (clé, valeur)
  • valeur est un objet quelconque de Python
  • Délimité par des accolades
  • Les couples sont séparés par des virgules
  • La clé et la valeur sont séparés par un deux point
  • dico = {cle1:val1, cle2:val2, ...}
  • Si la clé contient plusieurs éléments : tuples
Dictionnaires
Création
  • dico = dict()
  • dico = {}
  • dico = {'salutation':'Bonjour!', 'date':[23, 'janvier',2013]}
Ajout / Modification
  • dico['Elisabeth'] = 'Ranisavljevic'
  • Si la clé Elisabeth n'existe pas, le couple (Elisabeth, Ranisavljevic) est ajouté
  • Sinon, la valeur de la clé Elisabeth est modifiée
Dictionnaires
Méthodes
  • Liste des clés : dico.keys()
  • Liste des valeurs : dico.values()
  • Appartenance : dico.has_key(cle)
  • Suppression : dico.pop(cle)
  • Longueur : len(dico)
  • Liste de tuples : dico.items()
Dictionnaires
Parcours
for cle in dico :
     print cle
     print dico[cle]

for couple in dico.items() :
     print couple

for cle,valeur in dico.items() :
     print cle, valeur
Dictionnaires
Dictionnaires en compréhension
dic = {i : chr(97+i) for i in range(3)}
print dic
{0: 'a', 1: 'b', 2: 'c'}

Documentation sur les Dictionnaires
Ensembles
Présentation
  • Collection non ordonnée d'objets
  • Chaque élément apparait une et une seule fois
  • Délimité par des accolades
Ensembles
Création
  • ens1 = {1, 2, 3, 4}
  • ens2 = set('Bonjour')
  • print ens2
  • set(['B', 'j', 'o', 'n', 'r', 'u'])

  • Création d'un ensemble vide : ens = set()
  • Mais pas : ens = {} car c'est l'écriture du dictionnaire
  • Ensemble en compréhension :{elt for elt in range(5)}
Ensembles
Méthodes
  • Test d'appartenance : 'a' in ens2
  • Opérations ensemblistes :
    • Union : ens1 | ens2
    • Intersection : ens1 & ens2
    • Différence : ens1 - ens2
    • Elements dans l'un et l'autre mais pas les deux : ens1 ^ ens2
Ensembles
Méthodes
  • Ajout : ens.add('D')
  • Ajout de plusieurs : ens.update(['x','y'])
  • Suppression : ens.remove('B')
Documentation sur les Ensembles
Autres méthodes
Enumerate
  • Prend en argument un objet itérable
  • Retourne un tuple contenant un index et la valeur correspondante de l'objet itérable
liste = list()
ls = ['toto','tata','titi']
for ind, val in enumerate(ls) :
     liste.append([ind, val])

[[0, 'toto'], [1, 'tata'], [2, 'titi']]
Autres méthodes
Zip
  • Prend en argument plusieurs objets itérables
  • Retourne une liste de tuple, où le ie tuple contient les ie éléments de tous les objets
x = range(3)
y = range(4, 7)
z = range(10, 13)
zip(x, y, z)

[(0, 4, 10), (1, 5, 11), (2, 6, 12)]