Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah Cara Paling Cekap untuk Memutar Senarai dalam Python?

Apakah Cara Paling Cekap untuk Memutar Senarai dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-13 00:04:09746semak imbas

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

Putaran Senarai yang Cekap dalam Python

Apabila memutar senarai, pendekatan standard adalah untuk menghiris senarai pada titik putaran yang dikehendaki dan menggabungkan semula segmen yang terhasil. Walau bagaimanapun, terdapat pilihan yang lebih cekap tersedia.

Menggunakan Collections.deque

Pustaka standard Python menyediakan struktur data collections.deque, dioptimumkan untuk operasi di kedua-dua hujung daripada senarai itu. Ia menampilkan kaedah rotate() khusus untuk putaran senarai yang cekap.

Pertimbangkan kod berikut:

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])

Kaedah ini menawarkan kelebihan prestasi yang ketara berbanding teknik penghirisan standard, terutamanya untuk senarai yang lebih besar.

Menggunakan Algoritma Putar

Sebagai alternatif, algoritma khusus wujud untuk penggiliran senarai. Salah satu algoritma sedemikian ialah putaran kitaran, yang melibatkan berulang kali menukar elemen pertama dan terakhir senarai.

Berikut ialah pelaksanaan dalam 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

Algoritma ini melakukan pertukaran masa yang berterusan dan sesuai untuk senarai yang lebih kecil atau apabila faktor putaran diketahui lebih awal.

Atas ialah kandungan terperinci Apakah Cara Paling Cekap untuk Memutar Senarai dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn