J'ai rencontré le même problème... maxlen=5 de deque n'était PAS une option supportée à cause des problèmes de vitesse d'accès et de fiabilité.
Une solution simple :
l = []
l.append(x) # add 'x' to right side of list
l = l[-5:] # maxlen=5
Après l'ajout, il suffit de redéfinir "l" comme les cinq éléments les plus récents de "l".
print(l)
C'est fait.
Pour vos besoins, vous pourriez vous arrêter là... mais j'avais besoin d'un popleft(). Alors que pop() enlève un élément de la droite où il vient d'être ajouté... pop(0) l'enlève de la gauche :
if len(l) == 5: # if the length of list 'l' has reached 5
right_in_left_out = l.pop(0) # l.popleft()
else: #
right_in_left_out = None # return 'None' if not fully populated
Coup de chapeau à James de Tradewave.net
Il n'est pas nécessaire d'utiliser des fonctions de classe ou deque.
Plus loin... pour ajouter la gauche et la droite :
l = []
l.insert(0, x) # l.appendleft(x)
l = l[-5:] # maxlen=5
Ce serait l'équivalent de appendleft() si vous vouliez charger votre liste à l'avance sans utiliser deque
Enfin, si vous choisissez d'ajouter à partir de la gauche...
if len(l) == 5: # if the length of list 'l' has reached 5
left_in_right_out = l.pop() # pop() from right side
else: #
left_in_right_out = None # return 'None' if not fully populated