Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Các cách xoay vòng (rotate) list


List là cấu trúc dữ liệu quan trọng, xoay list là thao tác phổ biến. Có nhiều cách thực hiện với ưu/nhược điểm khác nhau.

1. Sử dụng slicing (cắt lát)

test_list = [1, 4, 6, 7, 2]
# Trái 3: test_list[3:] + test_list[:3]  → [7, 2, 1, 4, 6]
# Phải 3: test_list[-3:] + test_list[:-3] → [1, 4, 6, 7, 2]

2. Sử dụng list comprehension

n = len(test_list)
# Trái k: [test_list[(i + k) % n] for i in range(n)]
# Phải k: [test_list[(i - k) % n] for i in range(n)]

3. Sử dụng collections.deque.rotate()

from collections import deque
d = deque(test_list)
d.rotate(-3)  # Trái 3
d.rotate(3)   # Phải 3
list(d)

So sánh

  • Slicing: Ngắn gọn, dễ đọc, tạo list mới. Tốt cho list nhỏ/vừa.
  • List comprehension: Linh hoạt, không cần import, nhưng chậm hơn slicing.
  • deque.rotate(): Hiệu quả O(1) cho xoay, phù hợp xoay nhiều lần liên tiếp. Cần convert list↔deque.

Kết quả mẫu

Original: [1, 4, 6, 7, 2]
Left rotate 3:  [7, 2, 1, 4, 6]
Right rotate 3: [1, 4, 6, 7, 2]