Structures de données en Python - Guide complet

Publié: 2021-06-14

Table des matières

Qu'est-ce que la structure de données ?

La structure des données fait référence au stockage informatique des données pour une utilisation efficace. Il stocke les données d'une manière qui peut être facilement modifiée et accessible. Il fait collectivement référence aux valeurs de données, à la relation entre elles et aux opérations pouvant être effectuées sur les données. L'importance de la structure des données réside dans son application au développement de programmes informatiques. Comme les programmes informatiques dépendent fortement des données, une disposition appropriée des données pour un accès facile est de la plus haute importance pour tout programme ou logiciel.

Les quatre fonctions principales d'une structure de données sont

  • Pour saisir des informations
  • Pour traiter les informations
  • Pour maintenir les informations
  • Pour récupérer les informations

Types de structures de données en Python

Plusieurs structures de données sont prises en charge par Python pour faciliter l'accès et le stockage des données. Les types de structures de données Python peuvent être classés en types de données primitifs et non primitifs. Les premiers types de données incluent les entiers, les flotteurs, les chaînes et les booléens, tandis que le dernier est le tableau, la liste, les tuples, les dictionnaires, les ensembles et les fichiers. Par conséquent, les structures de données en python sont à la fois des structures de données intégrées et des structures de données définies par l'utilisateur. La structure de données intégrée est appelée structure de données non primitive.

Structures de données intégrées

Python a plusieurs structures de données qui agissent comme des conteneurs pour le stockage d'autres données. Ces structures de données python sont List, Dictionnaires, Tuple et Ensembles.

Structures de données définies par l'utilisateur

Ces structures de données peuvent être programmées avec la même fonction que celle des structures de données intégrées en python . Les structures de données définies par l'utilisateur sont : liste liée, pile, file d'attente, arbre, graphique et Hashmap.

Liste des structures de données intégrées et explication

1. Liste

Les données stockées dans une liste sont organisées séquentiellement et de différents types de données. Pour chaque donnée, une adresse est attribuée et elle est connue sous le nom d'index. La valeur d'index commence par un 0 et continue jusqu'au dernier élément. C'est ce qu'on appelle un indice positif. Un index négatif existe également si les éléments sont accédés de manière inversée. C'est ce qu'on appelle l'indexation négative.

Création de liste

La liste est créée sous forme de crochets. Des éléments peuvent ensuite être ajoutés en conséquence. Il peut être ajouté entre crochets pour créer une liste. Si aucun élément n'est ajouté, une liste vide sera créée. Sinon, les éléments de la liste seront créés.

Contribution

my_list = [] #créer une liste vide

imprimer(ma_liste)

my_list = [1, 2, 3, 'example', 3.132] #créer une liste avec des données

imprimer(ma_liste)

Sortir

[]

[1, 2, 3, 'exemple', 3.132]

Ajouter des éléments dans une liste

Trois fonctions sont utilisées pour l'ajout d'éléments dans une liste. Ces fonctions sont append(), extend() et insert().

  • Tous les éléments sont ajoutés en un seul élément à l'aide de la fonction append().
  • Pour ajouter des éléments un par un dans la liste, la fonction extend() est utilisée.
  • Pour ajouter des éléments par leur valeur d'index, la fonction insert() est utilisée.
Contribution

ma_liste = [1, 2, 3]

imprimer(ma_liste)

my_list.append([555, 12]) #add comme un seul élément

imprimer(ma_liste)

my_list.extend([234, 'more_example']) #ajouter comme éléments différents

imprimer(ma_liste)

my_list.insert(1, 'insert_example') #ajouter un élément i

imprimer(ma_liste)

Sortir:

[1, 2, 3]

[1, 2, 3, [555, 12]]

[1, 2, 3, [555, 12], 234, 'plus_exemple']

[1, 'insérer_exemple', 2, 3, [555, 12], 234, 'plus_exemple']

Suppression d'éléments dans une liste

Un mot-clé intégré "del" en python est utilisé pour supprimer un élément de la liste. Cependant, cette fonction ne renvoie pas l'élément supprimé.

  • Pour renvoyer un élément supprimé, la fonction pop() est utilisée. Il utilise la valeur d'index de l'élément à supprimer.
  • La fonction remove() permet de supprimer un élément par sa valeur.

Sortir:

[1, 2, 3, 'exemple', 3.132, 30]

[1, 2, 3, 3.132, 30]

Élément éclaté : 2 Liste restante : [1, 3, 3.132, 30]

[]

Évaluation des éléments d'une liste

  • L'évaluation de l'élément dans une liste est simple. L'impression de la liste affichera directement les éléments.
  • Des éléments spécifiques peuvent être évalués en transmettant la valeur de l'indice.

Sortir:

1

2

3

Exemple

3.132

dix

30

[1, 2, 3, 'exemple', 3.132, 10, 30]

Exemple

[1, 2]

[30, 10, 3.132, 'exemple', 3, 2, 1]

En plus des opérations mentionnées ci-dessus, plusieurs autres fonctions intégrées sont disponibles en python pour travailler avec des listes.

  • len() : la fonction est utilisée pour retourner la longueur de la liste.
  • index() : cette fonction permet à l'utilisateur de connaître la valeur d'index d'une valeur passée.
  • La fonction count() est utilisée pour trouver le nombre de la valeur qui lui est transmise.
  • sort() trie la valeur dans une liste et modifie la liste.
  • trié() trie la valeur dans une liste et renvoie la liste.

Sortir

6

3

2

[1, 2, 3, 10, 10, 30]

[30, 10, 10, 3, 2, 1]

2. Dictionnaire

Le dictionnaire est un type de structure de données où des paires clé-valeur sont stockées plutôt que des éléments uniques. Cela peut être expliqué avec l'exemple d'un annuaire téléphonique qui contient tous les numéros d'individus ainsi que leurs numéros de téléphone. Le nom et le numéro de téléphone définissent ici les valeurs constantes qui sont la "clé" et les numéros et noms de tous les individus comme valeurs de cette clé. L'évaluation d'une clé donnera accès à toutes les valeurs stockées dans cette clé. Cette structure clé-valeur définie sur Python est connue sous le nom de dictionnaire.

Création d'un dictionnaire

  • Les accolades fleuries inactives la fonction dict() peuvent être utilisées pour créer un dictionnaire.
  • Les paires clé-valeur doivent être ajoutées lors de la création d'un dictionnaire.

Modification des paires clé-valeur

Toute modification dans le dictionnaire ne peut être effectuée qu'à l'aide de la clé. Par conséquent, les clés doivent être accédées en premier, puis les modifications doivent être effectuées.

Contribution

my_dict = {'First': 'Python', 'Second': 'Java'} print(my_dict) my_dict['Second'] = 'C++' #changement d'élément print(my_dict) my_dict['Third'] = 'Ruby' #ajout de la paire clé-valeur print(my_dict)

Sortir:
{'Premier' : 'Python', 'Second' : 'Java'}
{'Premier' : 'Python', 'Second' : 'C++'}
{'Premier' : 'Python', 'Deuxième' : 'C++', 'Troisième' : 'Ruby'}


Suppression d'un dictionnaire
Une fonction clear () est utilisée pour supprimer tout le dictionnaire. Le dictionnaire peut être évalué à l'aide des clés à l'aide de la fonction get() ou en transmettant les valeurs des clés.

Contribution

dict = {'Mois' : 'Janvier', 'Saison' : 'hiver'}

print(dict['Premier'])

print(dict.get('Second')

Sortir

janvier

Hiver

Les autres fonctions associées à un dictionnaire sont keys(), values() et items().

3. Tuple

Semblables à la liste, les tuples sont des listes de stockage de données, mais la seule différence est que les données stockées dans un tuple ne peuvent pas être modifiées. Si les données d'un tuple sont modifiables, alors seulement il est possible de modifier les données.

  • Les tuples peuvent être créés via la fonction tuple().

Contribution

nouveau_tuple = (10, 20, 30, 40)

imprimer (nouveau_tuple)

Sortir

(10, 20, 30, 40)

  • Les éléments d'un tuple peuvent être évalués de la même manière que les éléments d'une liste.

Contribution

new_tuple2 = (10, 20, 30, 'âge')

pour x dans new_tuple2 :

impression(x)

imprimer (nouveau_tuple2)

imprimer(new_tuple2[0])

Sortir

dix

20

30

Âge

(10, 20, 30, 'âge')

dix

  • L'opérateur '+' est utilisé pour ajouter un autre tuple

Contribution

multiplet = (1, 2, 3)

tuple = tuple + (4, 5, 6

imprimer (uplet)

Sortir

(1, 2, 3, 4, 5, 6)

4. Définir

La structure de données des ensembles est similaire aux ensembles arithmétiques. C'est essentiellement la collection d'éléments uniques. Si les données continuent de se répéter, alors les ensembles envisagent d'ajouter cet élément une seule fois.

  • Un ensemble peut être créé simplement en lui passant les valeurs entre accolades de fleurs.

Contribution

ensemble = {10, 20, 30, 40, 40, 40}

impression (ensemble)

Sortir

{10, 20, 30, 40}

  • La fonction add() peut être utilisée pour ajouter des éléments à un ensemble.
  • Pour combiner les données de deux ensembles, la fonction union() peut être utilisée.
  • Pour identifier les données présentes dans les deux ensembles, la fonction intersection() est utilisée.
  • La fonction difference() génère uniquement les données uniques à l'ensemble, en supprimant les données communes.
  • La fonction symmetric_difference() génère les données uniques aux deux ensembles.

Liste des structures de données définies par l'utilisateur et explication

1. Piles

Une pile est une structure linéaire qui est soit une structure dernier entré premier sorti (LIFO) soit une structure premier entré dernier sorti (FIFO). Deux opérations principales existent dans la pile, c'est-à-dire push et pop. Push signifie l'ajout d'un élément en haut de la liste alors que pop signifie la suppression d'un élément du bas de la pile. Le processus est bien décrit dans la figure 1.

Utilité de la pile

  • Les éléments précédents peuvent être évalués par le biais d'un traçage vers l'arrière.
  • Correspondance d'éléments récursifs.

La source

Figure 1 : Représentation graphique de Stack

Exemple

Sortir

['Premier Deuxième Troisième']

['Premier deuxième troisième quatrième cinquième']

cinquième

['premier Deuxième Troisième Quatrième']

2. File d'attente

Semblable aux piles, une file d'attente est une structure linéaire qui permet l'insertion d'un élément à une extrémité et la suppression à l'autre extrémité. Les deux opérations sont appelées mise en file d'attente et retrait de la file d'attente. L'élément récemment ajouté est supprimé en premier comme les piles. Une représentation graphique de la file d'attente est illustrée à la figure 2. L'une des principales utilisations d'une file d'attente est le traitement des éléments dès leur entrée.

La source

Figure 2 : Représentation graphique des files d'attente

Exemple

Sortir

['Premier Deuxième Troisième']

['Premier deuxième troisième quatrième cinquième']

première

cinquième

['deuxième', 'troisième', 'quatrième', 'cinquième']

3. Arbre

Les arbres sont des structures de données non linéaires et hiérarchiques constituées de nœuds liés par des arêtes. La structure de données de l'arborescence python a un nœud racine, un nœud parent et un nœud enfant. La racine est l'élément le plus élevé d'une structure de données. Un arbre binaire est une structure dans laquelle les éléments n'ont pas plus de deux nœuds enfants.

L'utilité d'un arbre

  • Affiche les relations structurelles des éléments de données.
  • Traversez efficacement chaque nœud
  • Les utilisateurs peuvent insérer, rechercher, récupérer et supprimer les données.
  • Structures de données flexibles

Figure 3 : Représentation graphique d'un arbre

La source

Exemple:

Sortir

Première

Seconde

La troisième

4. Graphique

Une autre structure de données non linéaire en python est le graphe composé de nœuds et d'arêtes. Graphiquement, il affiche un ensemble d'objets, avec certains objets connectés par des liens. Les sommets sont des objets interconnectés tandis que les liens sont appelés arêtes. La représentation d'un graphe peut se faire via la structure de données du dictionnaire de python, où la clé représente les sommets et les valeurs représentent les arêtes.

Opérations de base pouvant être effectuées sur des graphiques

  • Afficher les sommets et les arêtes du graphique.
  • Ajout d'un sommet.
  • Ajout d'une bordure.
  • Création d'un graphique

L'utilité d'un graphique

  • La représentation d'un graphique est facile à comprendre et à suivre.
  • C'est une excellente structure pour représenter les relations liées, c'est-à-dire les amis Facebook.

Figure 4 : Représentation graphique d'un graphique

La source

Exemple

g = graphique(4)

g.edge(0, 2)

g.bord(1, 3)

g.bord(3, 2)

g.edge(0, 3)

g.__repr__()

Sortir

Liste d'adjacence du sommet 0

tête -> 3 -> 2

Liste d'adjacence du sommet 1

tête -> 3

Liste d'adjacence du sommet 2

tête -> 3 -> 0

Liste d'adjacence du sommet 3

tête -> 0 -> 2 -> 1

5. Carte de hachage

Les hashmaps sont des structures de données python indexées utiles pour le stockage de paires clé-valeur. Les données stockées dans les hashmaps sont récupérées via les clés qui sont calculées à l'aide d'une fonction de hachage. Ces types de structures de données sont utiles pour le stockage des données des étudiants, des détails des clients, etc. Les dictionnaires en python sont un exemple de hashmaps.

Exemple

Sortir

0 -> premier

1 -> seconde

2 -> troisième

0 -> premier

1 -> seconde

2 -> troisième

3 -> quatrième

0 -> premier

1 -> seconde

2 -> troisième

Utilité

  • Il s'agit de la méthode de récupération d'informations la plus flexible et la plus fiable par rapport aux autres structures de données.

6. Liste liée

C'est un type de structure de données linéaire. Fondamentalement, il s'agit d'une série d'éléments de données reliés par des liens en python. Les éléments d'une liste chaînée sont connectés par des pointeurs. Le premier nœud de cette structure de données est appelé en-tête et le dernier nœud est appelé queue. Par conséquent, une liste chaînée est constituée de nœuds ayant des valeurs, et chaque nœud est constitué d'un pointeur lié à un autre nœud.

L'utilité des listes chaînées

  • Par rapport à un tableau fixe, une liste chaînée est une forme dynamique de saisie de données. La mémoire est sauvegardée car elle alloue la mémoire des nœuds. Dans un tableau, la taille doit être prédéfinie, ce qui entraîne un gaspillage de mémoire.
  • Une liste liée peut être stockée n'importe où dans la mémoire. Un nœud de liste chaînée peut être mis à jour et déplacé vers un emplacement différent.

Figure 6 : Représentation graphique d'une liste chaînée

La source

Exemple

Sortir:

['Premier Deuxième Troisième']

['premier', 'deuxième', 'troisième', 'sixième', 'quatrième', 'cinquième']

['premier', 'troisième', 'sixième', 'quatrième', 'cinquième']

Conclusion

Les différents types de structures de données en python ont été explorés. Que vous soyez novice ou expert, les structures de données et les algorithmes ne peuvent être ignorés. Lors de l'exécution de toute forme d'opérations sur les données, les concepts de structures de données jouent un rôle essentiel. Les structures de données aident à stocker les informations de manière organisée, tandis que les algorithmes aident à guider tout au long de l'analyse des données. Par conséquent, les structures de données et les algorithmes Python aident l'informaticien ou tout utilisateur à traiter leurs données.

Si vous êtes curieux d'en savoir plus sur les structures de données, consultez le programme Executive PG en science des données de IIIT-B & upGrad, créé pour les professionnels en activité et proposant plus de 10 études de cas et projets, des ateliers pratiques, un mentorat avec des experts de l'industrie, 1 -on-1 avec des mentors de l'industrie, plus de 400 heures d'apprentissage et d'aide à l'emploi avec les meilleures entreprises.

Quelle structure de données est la plus rapide en Python ?

Dans les dictionnaires, les recherches sont plus rapides car Python utilise des tables de hachage pour les implémenter. Si nous utilisons les concepts Big O pour illustrer la distinction, les dictionnaires possèdent une complexité temporelle constante, O(1), tandis que les listes ont une complexité temporelle linéaire, O(n).

En Python, les dictionnaires sont le moyen le plus rapide de rechercher fréquemment des données contenant des milliers d'entrées. Les dictionnaires sont hautement optimisés car ils sont le type de mappage intégré à Python. Dans les dictionnaires et les listes, cependant, il existe un compromis espace-temps commun. Cela indique que même si nous pouvons réduire le temps nécessaire à notre approche, nous devrons utiliser plus d'espace mémoire.

Dans les listes, pour obtenir ce que vous voulez, vous devez parcourir la liste complète. Un dictionnaire, en revanche, renverra la valeur que vous recherchez sans parcourir toutes les clés.

Quel est le plus rapide dans la liste ou le tableau Python ?

En général, les listes Python sont incroyablement flexibles et peuvent contenir des données aléatoires entièrement hétérogènes, en plus d'être ajoutées rapidement et en temps constant approximatif. Ils sont la voie à suivre si vous avez besoin de réduire et d'étendre votre liste rapidement et sans douleur. Cependant, ils occupent beaucoup plus d'espace que les tableaux, en partie parce que chaque élément de la liste nécessite la création d'un objet Python distinct.

D'autre part, le type array.array est essentiellement une mince enveloppe autour des tableaux C. Il ne peut transporter que des données homogènes (c'est-à-dire des données du même type), la mémoire est donc limitée à sizeof(one object) * length bytes.

Quelle est la différence entre le tableau NumPy et la liste ?

Numpy est le package de base de calcul scientifique de Python. Il utilise un grand objet tableau multidimensionnel ainsi que des utilitaires pour les manipuler. Un tableau numpy est une grille de valeurs de type identique indexées par un tuple d'entiers non négatifs.

Les listes ont été incluses dans la bibliothèque principale de Python. Une liste est similaire à un tableau en Python, mais elle peut être redimensionnée et contenir des éléments de différents types. Quelle est la vraie différence ici? La performance est la réponse. Les structures de données numpy sont plus efficaces en termes de taille, de performances et de fonctionnalités.