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
Lepaskan: 2024-12-13 00:04:09
asal
733 orang telah melayarinya

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])
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan