Maison >développement back-end >Tutoriel Python >Quel est le moyen le plus efficace de faire pivoter une liste en Python ?

Quel est le moyen le plus efficace de faire pivoter une liste en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 00:04:09788parcourir

What's the Most Efficient Way to Rotate a List in Python?

Rotation efficace de liste en Python

Lors de la rotation d'une liste, l'approche standard consiste à découper la liste au point de rotation souhaité et à recombiner les segments résultants. Cependant, il existe des options plus efficaces disponibles.

Utiliser un Collections.deque

La bibliothèque standard Python fournit la structure de données collections.deque, optimisée pour les opérations aux deux extrémités de la liste. Il comporte une méthode rotate() dédiée pour une rotation efficace des listes.

Considérez le code suivant :

from collections import deque

items = deque([1, 2, 3])
items.rotate(1)  # Rotate the deque to the right by 1 position
print(items)  # Output: deque([3, 1, 2])

Cette méthode offre des avantages de performances significatifs par rapport à la technique de découpage standard, en particulier pour les listes plus grandes.

Utilisation d'algorithmes de rotation

Alternativement, des algorithmes spécialisés existent pour la rotation des listes. L'un de ces algorithmes est la rotation cyclique, qui consiste à échanger à plusieurs reprises le premier et le dernier élément de la liste.

Voici une implémentation en Python :

def cyclic_rotate(lst, n):
    """Rotates the list by n positions."""
    n = n % len(lst)
    for i in range(n):
        lst[0], lst[-1] = lst[-1], lst[0]
    return lst

Cet algorithme effectue des échanges à temps constant et convient aux listes plus petites ou lorsque le facteur de rotation est connu à l'avance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn