Dưới Python 3.x, bạn có thể làm điều này độc đáo:
>>> head, *tail = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
>>> head
1
>>> tail
[1, 2, 3, 5, 8, 13, 21, 34, 55]
Một tính năng mới trong 3.x là sử dụng các nhà điều hành *
ở giải nén, để có nghĩa là bất kỳ giá trị bổ sung nào. Nó được mô tả trong PEP 3132 - Extended Iterable Unpacking. Điều này cũng có lợi thế là làm việc trên bất kỳ lặp lại, không chỉ trình tự.
Nó cũng là thực sự có thể đọc được.
Như đã trình bày trong PEP, nếu bạn muốn làm tương đương dưới 2.x (không có khả năng thực hiện một danh sách tạm thời), bạn phải làm điều này:
it = iter(iterable)
head = it.next()
tail = list(it)
Đương nhiên, nếu bạn đang làm việc trên một danh sách, cách dễ nhất mà không có cú pháp 3.x là:
head, tail = seq[0], seq[1:]
Hãy nhớ rằng danh sách không được triển khai dưới dạng danh sách được liên kết đơn lẻ bằng Python, vì vậy thao tác này tốn kém (như trong: toàn bộ danh sách cần được sao chép). Tùy thuộc vào những gì bạn muốn đạt được, điều này có thể hoặc không có thể là một vấn đề. Tôi chỉ đề cập rằng vì loại phá hoại danh sách này thường được tìm thấy trong các ngôn ngữ chức năng, nơi nó thực sự là một hoạt động rất rẻ. –