Cách cắt danh sách trong Python (Chỉ số, bước và đảo ngược)
Tìm hiểu cách cắt danh sách trong Python bằng cú pháp dấu ngoặc mạnh mẽ. Làm chủ các đối số bắt đầu, dừng và bước, lập chỉ mục phủ định và đảo ngược danh sách.
Tổng quan
Cắt lát là một trong những tính năng trực quan và mạnh mẽ nhất của Python, cho phép bạn trích xuất các tập hợp con của danh sách, bộ dữ liệu hoặc chuỗi bằng cú pháp rõ ràng và ngắn gọn. Thay vì viết các vòng lặp dài dòng để sao chép các phần tử cụ thể từ danh sách, ký hiệu lát cắt của Python cho phép bạn chỉ định một phạm vi chỉ mục bên trong dấu ngoặc vuông.
Cú pháp hoàn chỉnh để cắt danh sách là `my_list[start:stop:step]`. Chỉ mục `start` là bao gồm, chỉ mục `stop` là độc quyền và `step` xác định khoảng tăng giữa các phần tử (mặc định là 1). Nếu bạn bỏ qua `start`, Python sẽ mặc định ở đầu danh sách. Nếu bạn bỏ qua `stop`, Python sẽ mặc định ở cuối danh sách. Điều này làm cho việc trích xuất các phần của bộ sưu tập có tính biểu cảm cao.
Slicing cũng cực kỳ linh hoạt vì nó hỗ trợ các chỉ số âm. Chỉ số bắt đầu hoặc dừng âm tính đếm ngược từ cuối danh sách (trong đó `-1` đại diện cho mục cuối cùng). Bằng cách đặt giá trị bước phủ định, chẳng hạn như `my_list[::-1]`, bạn có thể nhanh chóng truy xuất bản sao đảo ngược của danh sách. Hiểu phạm vi lát cắt là điều cần thiết để trích xuất dữ liệu rõ ràng.
Đầu ra mã & thực thi
Tập lệnh này thể hiện việc cắt danh sách bằng cách sử dụng các phạm vi bước bắt đầu, dừng, bước, lập chỉ mục phủ định và đảo ngược danh sách khác nhau.
numbers = [0, 10, 20, 30, 40, 50, 60, 70, 80]
# 1. Basic slicing: elements from index 2 up to (but excluding) 6
subset = numbers[2:6]
print("Subset [2:6]:", subset)
# 2. Omitting indices: start to index 4, and index 5 to end
first_five = numbers[:5]
last_four = numbers[5:]
print("First five [:5]:", first_five)
print("Last four [5:]:", last_four)
# 3. Using a step parameter: get every second element
every_second = numbers[::2]
print("Every second [::2]:", every_second)
# 4. Negative indexing: get the last three elements
last_three = numbers[-3:]
print("Last three [-3:]:", last_three)
# 5. Reverse the list using step=-1
reversed_numbers = numbers[::-1]
print("Reversed list [::-1]:", reversed_numbers)Subset [2:6]: [20, 30, 40, 50]
First five [:5]: [0, 10, 20, 30, 40]
Last four [5:]: [50, 60, 70, 80]
Every second [::2]: [0, 20, 40, 60, 80]
Last three [-3:]: [60, 70, 80]
Reversed list [::-1]: [80, 70, 60, 50, 40, 30, 20, 10, 0]Triển khai từng bước
- Sử dụng list[start:stop] để trích xuất các phần tử từ chỉ mục bắt đầu, nhưng không bao gồm, dừng.
- Bỏ qua các chỉ số bắt đầu hoặc dừng (ví dụ: list[:4] hoặc list[4:]) để cắt khỏi ranh giới của danh sách.
- Truyền đối số thứ ba bên trong ngoặc list[::step] để bỏ qua các phần tử theo khoảng thời gian đều đặn.
- Sử dụng chỉ số âm để đếm ngược các phần tử từ cuối bộ sưu tập.
Câu hỏi thường gặp
Việc cắt có sửa đổi danh sách ban đầu không?
Không, việc cắt danh sách sẽ trả về một bản sao nông của phạm vi được yêu cầu, khiến danh sách ban đầu hoàn toàn không thay đổi.
Điều gì xảy ra nếu các chỉ số lát cắt nằm ngoài giới hạn?
Không giống như việc truy cập vào một chỉ mục duy nhất gây ra IndexError, việc cắt lát có thể tha thứ và chỉ giới hạn phạm vi ở các ranh giới của danh sách, trả về một danh sách trống nếu không có phần tử nào nằm trong phạm vi đó.
Chủ đề liên quan
Tìm hiểu cách sao chép danh sách trong Python. Khám phá việc cắt danh sách, phương thức copy(), hàm tạo danh sách và nắm vững sự khác biệt giữa các bản sao nông và sâu.
Cách đảo ngược chuỗi trong PythonTìm hiểu cách đảo ngược một chuỗi trong Python bằng cách sử dụng tính năng cắt, hàm đảo ngược() và nối vòng lặp bằng các ví dụ về mã trực quan.
Cách tìm độ dài của danh sách trong PythonTìm hiểu cách tìm độ dài của danh sách trong Python bằng hàm len(). Hiểu độ phức tạp về thời gian O(1) và số lần kiểm tra.
Tài nguyên Python được đề xuất
Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.
Giải thích về biến và kiểu dữ liệu trong Python
Hiểu các biến Python và các kiểu dữ liệu cốt lõi (chuỗi, số nguyên, số float, boolean). Hướng dẫn đầy đủ cho người mới bắt đầu về gán bộ nhớ trong Python.
Bảng cheat các phương thức danh sách Python
Hướng dẫn tham khảo nhanh về các thao tác với danh sách Python. Nắm vững cách thêm, chèn, xóa, sắp xếp và cắt các phần tử.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.