Như Vincenzooo nói một cách chính xác, Pythonic lst[:-n]
không hoạt động khi n==0
.
Các tác phẩm sau đây cho tất cả n>=0
:
lst = lst[:-n or None]
Tôi thích giải pháp này vì nó cũng có thể đọc được bằng tiếng Anh: "Trả lại một lát bỏ qua các yếu tố N cuối cùng hoặc không có [nếu không cần phải bỏ qua]".
Giải pháp này hoạt động vì những điều sau đây:
x or y
đánh giá thành
0 khilst[-n:n and None] = []
0 là đúng về mặt logic [ví dụ: khi nó không phải làlst[-n:n and None] = []
2,lst[-n:n and None] = []
3,lst[-n:n and None] = []
4,lst[-n:n and None] = []
5, ...] vàlst[-n:n and None] = []
6 khác. Vì vậy,lst[-n:n and None] = []
7 làlst[-n:n and None] = []
8 khilst[-n:n and None] = []
9 vàlst[-n:n and None] = []
5 khilst[-n:n and None] = []
n==0
.- Khi cắt,
5 tương đương với việc bỏ qua giá trị, do đólst[-n:n and None] = []
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]
3 giống nhưThe original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]
4 [xem tại đây].
Theo ghi nhận của @SWK, giải pháp này tạo ra một danh sách mới [nhưng ngay lập tức loại bỏ cái cũ trừ khi nó được tham chiếu ở nơi khác] thay vì chỉnh sửa bản gốc. Đây thường không phải là vấn đề về hiệu suất vì tạo một danh sách mới trong một lần thường nhanh hơn so với việc loại bỏ một yếu tố tại thời điểm đó [trừ khi
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]5
Một giải pháp khả thi [theo cùng một kiểu với cái gốc của tôi] hoạt động cho n>=0
nhưng: a] không tạo ra một bản sao của danh sách; và b] cũng ảnh hưởng đến các tham chiếu khác vào cùng một danh sách, có thể là như sau:
lst[-n:n and None] = []
Điều này chắc chắn là không thể đọc được và không nên sử dụng. Trên thực tế, ngay cả giải pháp ban đầu của tôi cũng đòi hỏi quá nhiều sự hiểu biết về ngôn ngữ để được mọi người đọc và hiểu một cách đơn giản. Tôi sẽ không sử dụng trong bất kỳ mã thực nào và tôi nghĩ rằng giải pháp tốt nhất là bởi @Wonder.Mice:
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]9.
Chúng ta thường đến các tình huống trong đó chúng ta cần giảm kích thước của danh sách bằng cách cắt ngắn các yếu tố cuối cùng của danh sách. Điều này có ứng dụng của nó trong lập trình hàng ngày khi đôi khi chúng tôi yêu cầu nhận tất cả các danh sách có kích thước tương tự hoặc xóa một vài hồ sơ cuối cùng khỏi danh sách. Hãy để thảo luận về một vài cách mà nhiệm vụ này có thể được thực hiện.
Sử dụng Len [] + Danh sách cắt để loại bỏ các yếu tố k cuối cùng của danh sách
Danh sách cắt có thể thực hiện nhiệm vụ cụ thể này, trong đó chúng tôi chỉ cắt LEN đầu tiên [danh sách] - K Các yếu tố để nằm trong danh sách và do đó loại bỏ các yếu tố k cuối cùng.
Ở đây chúng tôi tìm thấy độ dài của danh sách hiện tại và tính độ dài sẽ là sau khi xóa các phần tử N [LEN_L - L], sau đó sử dụng cắt, chúng tôi tạo một danh sách sao chép, trong đó nó đã bị xóa các yếu tố cuối cùng.
Python3
Các
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]5
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]6
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]7
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]8
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]9
List after removing elements: [1, 7, 6]0
List after removing elements: [1, 7, 6]1
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]1
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]9
List after removing elements: [1, 7, 6]4
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]1
List after removing elements: [1, 7, 6]6
List after removing elements: [1, 7, 6]7
List after removing elements: [1, 7, 6]8
List after removing elements: [1, 7, 6]9
lst[:-n]
0The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]5
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]6
lst[:-n]
3 ________ 48 & nbsp; The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]9
lst[:-n]
6Đầu ra
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]
Sử dụng cắt danh sách tiêu cực để loại bỏ các yếu tố k cuối cùng của danh sách
Chúng ta có thể thực hiện nhiệm vụ cụ thể này bằng cách sử dụng cắt danh sách tiêu cực, trong đó chúng ta bắt đầu loại bỏ các phần tử khỏi chỉ số cuối cùng của danh sách và do đó loại bỏ tất cả các phần tử K khỏi phần cuối. Nếu giá trị chỉ mục âm nhiều hơn độ dài của danh sách, nó sẽ trả về một danh sách trống.
Python3
Các
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]5
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]6
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]7
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]8
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]9
List after removing elements: [1, 7, 6]0
List after removing elements: [1, 7, 6]1
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]1
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]9
List after removing elements: [1, 7, 6]4
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]1
List after removing elements: [1, 7, 6]6
List after removing elements: [1, 7, 6]7
List after removing elements: [1, 7, 6]8
List after removing elements: [1, 7, 6]9
lst[:-n]
0The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]5
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]6
lst[:-n]
3 ________ 48 & nbsp; The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]9
lst[:-n]
6Output:
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]
Đầu ra
Sử dụng cắt danh sách tiêu cực để loại bỏ các yếu tố k cuối cùng của danh sách
Python3
Chúng ta có thể thực hiện nhiệm vụ cụ thể này bằng cách sử dụng cắt danh sách tiêu cực, trong đó chúng ta bắt đầu loại bỏ các phần tử khỏi chỉ số cuối cùng của danh sách và do đó loại bỏ tất cả các phần tử K khỏi phần cuối. Nếu giá trị chỉ mục âm nhiều hơn độ dài của danh sách, nó sẽ trả về một danh sách trống.
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]5
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]6
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]7
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]8
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]9
List after removing elements: [1, 7, 6]0
List after removing elements: [1, 7, 6]1
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]1
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]9
List after removing elements: [1, 7, 6]4
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]1
List after removing elements: [1, 7, 6]6
List after removing elements: [1, 7, 6]7
List after removing elements: [1, 7, 6]8
List after removing elements: [1, 7, 6]9
lst[:-n]
0 lst[-n:n and None] = []
31 lst[-n:n and None] = []
32The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]5
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]6
lst[:-n]
3 ________ 48 & nbsp; The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]9
lst[:-n]
6Output:
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]
Đầu rato remove last K elements of list
Sử dụng cắt danh sách tiêu cực để loại bỏ các yếu tố k cuối cùng của danh sách
Python3
Chúng ta có thể thực hiện nhiệm vụ cụ thể này bằng cách sử dụng cắt danh sách tiêu cực, trong đó chúng ta bắt đầu loại bỏ các phần tử khỏi chỉ số cuối cùng của danh sách và do đó loại bỏ tất cả các phần tử K khỏi phần cuối. Nếu giá trị chỉ mục âm nhiều hơn độ dài của danh sách, nó sẽ trả về một danh sách trống.
List after removing elements: [1, 7, 6]1
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]1
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]9
List after removing elements: [1, 7, 6]4
The original list is : [1, 4, 6, 3, 5, 8] The list after removing last K elements : [1, 4, 6]1
List after removing elements: [1, 7, 6]6
List after removing elements: [1, 7, 6]7
List after removing elements: [1, 7, 6]8
List after removing elements: [1, 7, 6]9
lst[:-n]
0The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]5
The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]6
lst[:-n]
3 ________ 48 & nbsp; The original list is : [1, 7, 6, 3, 5, 8] The list after removing last K elements : [1, 7, 6]9
lst[:-n]
6Output:
List after removing elements: [1, 7, 6]