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

Duyệt ngược (Backward iteration) trong Python


Khi cần duyệt list/tuple từ cuối về đầu, Python cung cấp nhiều cách.

Cách 1: range(len-1, -1, -1) - Cũ, rõ ràng

my_list = ['Mon', 'Tue', 'Wed', 'Thu']
for i in range(len(my_list) - 1, -1, -1):
    print(my_list[i])
# Thu, Wed, Tue, Mon

Cách 2: Slicing [::-1] - Ngắn gọn, pythonic

my_list = ['Mon', 'Tue', 'Wed', 'Thu']
for item in my_list[::-1]:
    print(item)
# Thu, Wed, Tue, Mon

Cách 3: reversed() - Hiệu năng tốt, không tạo bản sao

my_list = ['Mon', 'Tue', 'Wed', 'Thu']
for item in reversed(my_list):
    print(item)
# Thu, Wed, Tue, Mon

So sánh hiệu năng

Phương phápTạo bản sao?Độ phức tạp không gianKhuyến nghị
range(len-1, -1, -1)KhôngO(1)Cần index
list[::-1]Có (list mới)O(n)List nhỏ, code ngắn
reversed(list)Không (iterator)O(1)Tốt nhất chung

Lưu ý

  • reversed() yêu cầu đối tượng có __len__ và __getitem__ (sequence) hoặc implements __reversed__.
  • Với iterator/generator chung, không dùng được reversed() → phải chuyển list trước.

Kết luận

Ưu tiên reversed(seq) cho duyệt ngược sequence. Dùng [::-1] khi cần list ngược để dùng lại nhiều lần.