Introduction aux Structures de Données
Rappels sur les types de données et variables
En programmation, les variables sont des conteneurs nommés qui stockent des informations. Chaque variable a un type de données qui détermine la nature des informations qu'elle peut contenir et les opérations que l'on peut effectuer dessus.
Key Concepts:
- Types de données primitifs: Ce sont les types de base. En Python, bien que tout soit un objet, on distingue des types simples comme :
int(entiers) :5,-10float(nombres à virgule flottante) :3.14,0.5str(chaînes de caractères) :"bonjour",'Python'bool(booléens) :True,False(vrai ou faux)
- Déclaration et affectation:
- La déclaration d'une variable lui donne un nom.
- L'affectation (ou assignation) lui donne une valeur.
- En Python, la déclaration et l'affectation se font souvent en même temps :
age = 20. - On peut réaffecter une nouvelle valeur à une variable :
age = 21.
- Portée des variables: La portée d'une variable définit les parties du programme où elle est accessible.
- Variable locale : définie à l'intérieur d'une fonction, elle n'est accessible que dans cette fonction.
- Variable globale : définie en dehors de toute fonction, elle est accessible partout dans le programme. Utiliser le mot-clé
globalpour modifier une variable globale dans une fonction.
# Exemple de portée
variable_globale = "Je suis globale"
def ma_fonction():
variable_locale = "Je suis locale"
print(variable_globale) # Accès à la variable globale
print(variable_locale)
ma_fonction()
# print(variable_locale) # Erreur, variable_locale n'est pas accessible ici
print(variable_globale)
Les listes et tableaux
Les listes sont des collections ordonnées et modifiables d'éléments. Elles sont très flexibles et peuvent contenir des éléments de types différents. En Python, elles sont l'équivalent des tableaux dans d'autres langages, mais avec plus de fonctionnalités.
Key Concepts:
- Définition et indexation:
- Une liste se définit avec des crochets
[]. ma_liste = [10, "hello", 3.14, True]- Les éléments sont accédés par leur indice, qui commence à
0pour le premier élément. ma_liste[0]donne10.ma_liste[1]donne"hello".- Les indices négatifs permettent d'accéder aux éléments depuis la fin :
ma_liste[-1]donneTrue.
- Une liste se définit avec des crochets
- Opérations courantes (ajout, suppression, accès):
- Ajout:
append(element): ajoute un élément à la fin.ma_liste.append(False)insert(indice, element): insère un élément à un indice spécifique.ma_liste.insert(1, "nouvel élément")
- Suppression:
remove(element): supprime la première occurrence d'un élément.ma_liste.remove(3.14)pop(indice): supprime et retourne l'élément à l'indice donné (par défaut le dernier).dernier_element = ma_liste.pop()del ma_liste[indice]: supprime l'élément à l'indice donné.
- Accès et modification:
- Accès par indice :
element = ma_liste[2] - Modification par indice :
ma_liste[0] = 20
- Accès par indice :
- Tranches (slicing) : Permet d'extraire une sous-liste.
ma_liste[début:fin:pas]ma_liste[1:3]: éléments d'indice 1 et 2.ma_liste[:]: copie de la liste.ma_liste[::-1]: inverse la liste.
- Ajout:
- Parcours de listes:
- Avec une boucle
forsur les éléments :for element in ma_liste: print(element) - Avec une boucle
forsur les indices (pour accéder à l'indice et à la valeur) :for i in range(len(ma_liste)): print(f"L'élément à l'indice {i} est {ma_liste[i]}") - La compréhension de liste est une manière concise de créer des listes :
carres = [x*x for x in range(5)]donne[0, 1, 4, 9, 16].
- Avec une boucle
Les dictionnaires et ensembles
Ces deux structures sont des collections non ordonnées.
Key Concepts:
- Paires clé-valeur (dictionnaires):
- Un dictionnaire (
dict) est une collection non ordonnée de paires clé:valeur. Chaque clé doit être unique et immuable (nombre, chaîne de caractères, tuple). Les valeurs peuvent être de n'importe quel type. mon_dict = {"nom": "Alice", "age": 30, "ville": "Paris"}- Accès aux valeurs: par la clé.
mon_dict["nom"]donne"Alice". - Ajout/Modification:
mon_dict["profession"] = "Développeur" - Suppression:
del mon_dict["ville"]ouvaleur = mon_dict.pop("age") - Parcours:
for cle, valeur in mon_dict.items(): print(f"{cle}: {valeur}")for cle in mon_dict.keys(): # Parcours des clés print(cle)for valeur in mon_dict.values(): # Parcours des valeurs print(valeur)
- Un dictionnaire (
- Propriétés des ensembles (unicité):
- Un ensemble (
set) est une collection non ordonnée d'éléments uniques. Il n'y a pas de doublons. mon_set = {1, 2, 3, 3, 4}donnera{1, 2, 3, 4}.- Utile pour éliminer les doublons d'une liste :
liste_avec_doublons = [1, 2, 2, 3]; unique_elements = set(liste_avec_doublons) - Opérations ensemblistes:
- Union (
|ouunion()):A | B - Intersection (
&ouintersection()):A & B - Différence (
-oudifference()):A - B - Appartenance (
in):2 in mon_set
- Union (
- Les ensembles sont très efficaces pour vérifier l'appartenance d'un élément.
- Un ensemble (
Structures de données imbriquées
Il est courant de combiner les structures de données pour représenter des informations plus complexes.
Key Concepts:
- Listes de listes: Représentent souvent des matrices ou des tableaux à deux dimensions.
matrice = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]- Accès :
matrice[0][1]donne2(ligne 0, colonne 1).
- Dictionnaires de listes: Une clé peut pointer vers une liste de valeurs.
eleves = {"Alice": ["Maths", "Physique"], "Bob": ["Chimie", "SVT"]}- Accès :
eleves["Alice"][0]donne"Maths".
- Dictionnaires de dictionnaires: Pour des données encore plus structurées.
carnet_adresses = {"Alice": {"ville": "Paris", "tel": "06..."}, "Bob": {"ville": "Lyon", "tel": "07..."}}- Accès :
carnet_adresses["Alice"]["ville"]donne"Paris".
- Accès aux éléments imbriqués: Se fait en chaînant les opérateurs d'indexation
[]ou d'accès par clé.- Comprendre la structure pour accéder aux données est crucial. Visualisez-les comme des boîtes contenant d'autres boîtes.


