Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

File d'attente Python : comprendre FIFO et LIFO avec exemples pratiques

File d'attente Python : comprendre FIFO et LIFO avec exemples pratiques

Qu'est-ce qu'une file d'attente en Python ?

Une file d'attente est une structure de données qui stocke les éléments dans un ordre linéaire. Les éléments sont ajoutés à l'arrière et retirés de l'avant, suivant le principe Premier Entré, Premier Sorti (FIFO). La file expose deux extrémités logiques : front (avant) et rear (arrière) — enfiler à l'arrière, défiler de l'avant.

Dans ce tutoriel, vous apprendrez :

Comment fonctionne le module Queue ?

Le comportement est analogue à une file physique : la première personne dans la file est la première servie. Dans la structure de données file, l'élément enfilé en premier sera défilé en premier.

File d attente Python : comprendre FIFO et LIFO avec exemples pratiques

Le point rear (arrière) est où les nouveaux éléments sont insérés (ex. : valeur 7). Le point front (avant) est où les éléments quittent la file ; retirer le premier élément donne la valeur 1.

Comme la file est linéaire, vous ne pouvez pas retirer un élément arbitraire au milieu ; vous devez défiler tous les éléments précédents d'abord.

File d attente Python : comprendre FIFO et LIFO avec exemples pratiques

Types de files en Python

Le module queue de Python offre deux classes de file principales :

Démarrage : Importation du module

Python inclut le module queue par défaut ; aucune installation externe n'est requise.

import queue

Instancier une file FIFO :

q1 = queue.Queue()

Instancier une file LIFO :

q1 = queue.LifoQueue()

Méthodes clés

Les classes Queue et LifoQueue exposent la même API de base :

Exemple file FIFO

Enfiler un seul élément

import queue
q1 = queue.Queue()
q1.put(10)  # ajouter 10 à la file

Enfiler plusieurs éléments avec une limite de taille

q1 = queue.Queue(maxsize=5)  # maximum 5 éléments
for i in range(1, 6):
    q1.put(i)
print(q1.full())  # → True

Sortie :

True

Défiler un élément

element = q1.get()
print('Élément défilé :', element)

Sortie :

Élément défilé : 10

Exemple file LIFO

Enfiler un seul élément

q1 = queue.LifoQueue()
q1.put(10)

Défiler un élément

element = q1.get()
print('Défiler depuis LIFO :', element)

Sortie :

Défiler depuis LIFO : 10

Opérations par lot

FIFO – Enfiler 20 nombres

q1 = queue.Queue()
for i in range(20):
    q1.put(i)

FIFO – Défiler tous

while not q1.empty():
    print('Valeur :', q1.get())

Sortie :

Valeur : 0
Valeur : 1
...
Valeur : 19

LIFO – Enfiler 20 nombres

q1 = queue.LifoQueue()
for i in range(20):
    q1.put(i)

LIFO – Défiler tous

while not q1.empty():
    print('Valeur :', q1.get())

Sortie :

Valeur : 19
Valeur : 18
...
Valeur : 0

Tri d'une file (tri à bulles)

q1 = queue.Queue()
for item in [11, 5, 4, 21, 3, 10]:
    q1.put(item)

n = q1.qsize()
for i in range(n):
    x = q1.get()
    for j in range(n-1):
        y = q1.get()
        if x > y:
            q1.put(y)
        else:
            q1.put(x)
        x = y
    q1.put(x)

while not q1.empty():
    print(q1.queue[0], end=' ')
    q1.get()

Sortie :

3 4 5 10 11 21

Inverser une file en utilisant la récursion

def inverser_file(source, destination):
    element = source.get()
    if not source.empty():
        inverser_file(source, destination)
    destination.put(element)
    return destination

q1 = queue.Queue()
for item in [11, 5, 4, 21, 3, 10]:
    q1.put(item)

q2 = queue.Queue()
inverser_file(q1, q2)

while not q2.empty():
    print(q2.queue[0], end=' ')
    q2.get()

Sortie :

10 3 21 4 5 11

Résumé rapide

Python

  1. Maîtriser les opérateurs Python : Guide complet
  2. Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
  3. Maîtriser la méthode strip() de Python : Guide complet et exemples pratiques
  4. Python len() : Guide pratique pour mesurer la longueur des objets
  5. Maîtriser yield en Python : générateur vs return – Guide pratique
  6. Python Counter dans collections : comptage efficace, mise à jour et opérations arithmétiques
  7. Maîtriser enumerate() en Python : boucler avec indices pour listes, tuples, chaînes et dictionnaires
  8. Python time.sleep() : comment ajouter des délais dans votre code (exemple)
  9. Python list.index() : Comment Trouver les Positions d'Éléments avec Exemples Pratiques