- Notifications
You must be signed in to change notification settings - Fork266
Description
En lisant la doc de heapq de la bibliothèque, je pense qu'il y a un contresens de traduction en français (ligne 75 de heapq.po):
Ces deux points permettent d'aborder le tas comme une liste Python standard sans surprise : heap[0] est le plus petit élément tandis que heap.sort() ne modifie pas le tas !
Texte original en anglais:
These two make it possible to view the heap as a regular Python list without surprises: heap[0] is the smallest item, and heap.sort() maintains the heap invariant!
La traduction consière l'anglais 'invariant' comme un adjectif, alors qu'il doit être compris comme un nom. Plus simplement dit, heap.sort() conserve l'invariant de la liste (à savoir, heap[0] est le plus petit élément et heap[k]<=heap[2k+1] et heap[k]<=heap[2k+2]), mais ne conserve pas la liste invariante, elle peut être modifiée par l'appel à sort().
Un simple exemple montre que heap.sort() peut modifier le tas:
import heapq
heap = [1,4,2,3]
heapq.heapify(heap)
heap
[1, 3, 2, 4]
heap.sort()
heap
[1, 2, 3, 4]
Je pense que la traduction correcte de la phrase pourrait être:
Ces deux points permettent d'aborder le tas comme une liste Python standard sans surprise : heap[0] est le plus petit élément tandis que heap.sort() conserve l'invariance du tas !
(l'expression "conservant l'invariance du tas" est utilisée plus bas dans la traduction).