Tổng quan
Chúng tôi đã thảo luận về phương pháp Danh sách remove[]
rất chi tiết ở đây. Hướng dẫn này sẽ chỉ tập trung vào phân tích độ phức tạp về thời gian và không gian của phương pháp.time and space complexity analysis of the method.
Trước khi thảo luận về sự phức tạp về thời gian và không gian, hãy để nhanh chóng nhớ lại phương pháp này là gì.
list.remove[]________ 2 & nbsp; xóa sự xuất hiện đầu tiên của phần tử & nbsp; ________ 3 & nbsp; từ danh sách. Nếu phần tử không có trong danh sách, nó sẽ ném & nbsp; valueError; Phương thức này cũng mong đợi một tham số tức là giá trị sẽ được xóa khỏi danh sách, nhưng khi không có tham số nào được truyền cho nó, nó sẽ ném & nbsp; typeerror.ValueError; the method also expects a parameter i.e the value to be removed from the list, but when no parameter is passed to it, it throws the TypeError.
Phân tích độ phức tạp thời gian và không gian của phương thức xóa danh sách []
Độ phức tạp về thời gian
Time Complexity of remove[] – O[N]
Space Complexity of remove[] – O[1]
Độ phức tạp không gianO[N], where N is the size of the list.
Bài đăng này có hữu ích không?
# Replicating the behavior of list.remove[] method. def list_remove[li,element = None]: if element == None: # If no value provided for deletion, throw a TypeError raise TypeError["TypeError: list_remove[] takes exactly one argument [0 given]"] for idx,ele in enumerate[li]: if element == ele: # Element found? Delete it from the list del li[idx] # Delete the element from the list return # Return after deleting the element raise ValueError["item not found"] # If the element not found in the list, raise the ValueError # Driver code if __name__ == "__main__": list = [1,2,2,3,22] # Sample List print["List before deleting element {}".format[list]] remove_element = 2 # Element to be removed list_remove[list,remove_element] # Call the deletion on list print["List after deleting element {}".format[list]]Độ phức tạp không gian
Bài đăng này có hữu ích không?O[1] operation so are the item shifts, hence the space complexity of the algorithm is O[1].
Chúng tôi đã thảo luận về phương pháp Danh sách remove[]
rất chi tiết ở đây. Hướng dẫn này sẽ chỉ tập trung vào phân tích độ phức tạp về thời gian và không gian của phương pháp.
Trước khi thảo luận về sự phức tạp về thời gian và không gian, hãy để nhanh chóng nhớ lại phương pháp này là gì.
Trang này ghi lại sự phức tạp về thời gian [hay còn gọi là "Big O" hoặc "Big OH"] của các hoạt động khác nhau trong Cpython hiện tại. Các triển khai Python khác [hoặc các phiên bản phát triển cũ hơn hoặc vẫn còn dưới của CPython] có thể có các đặc điểm hiệu suất hơi khác nhau. Tuy nhiên, nhìn chung là an toàn khi cho rằng chúng không chậm hơn so với hệ số O [log n].
Nói chung, 'n' là số lượng các yếu tố hiện tại trong container. 'K' là giá trị của một tham số hoặc số lượng phần tử trong tham số.
danh sách
Trường hợp trung bình giả định các tham số được tạo ra đồng đều một cách ngẫu nhiên.
Trong nội bộ, một danh sách được biểu diễn dưới dạng một mảng; Các chi phí lớn nhất đến từ việc tăng vượt quá quy mô phân bổ hiện tại [vì mọi thứ phải di chuyển] hoặc từ việc chèn hoặc xóa ở đâu đó gần đầu [vì mọi thứ sau đó phải di chuyển]. Nếu bạn cần thêm/xóa ở cả hai đầu, hãy xem xét sử dụng một bộ sưu tập.Deque thay thế.
Hoạt động | Trường hợp trung bình | Đã khấu hao trường hợp xấu nhất |
Sao chép | Trên] | Trên] |
Nối [1] | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | Trên] | Trên] |
Nối [1] | Trên] | Trên] |
Nối [1] | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | Trên] | Trên] |
Nối [1] | Trên] | Trên] |
Nối [1] | O [1] | O [1] |
Pop cuối cùng | Trên] | Trên] |
Nối [1] | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | Trung cấp pop [2] | Trung cấp pop [2] |
Chèn | Nhận mục | Nhận mục |
Thiết lập các mục | Trên] | |
Nối [1] | Trên] | |
Nối [1] | O [1] | O [1] |
collections.deque
Pop cuối cùng
Hoạt động | Trường hợp trung bình | Đã khấu hao trường hợp xấu nhất |
Sao chép | Trên] | Trên] |
Nối [1] | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | Trên] | Trên] |
Nối [1]
O [1]
Hoạt động | Pop cuối cùng | Trung cấp pop [2] | Chèn |
Thiết lập các mục | O [1] | Trên] | |
Pop cuối cùng | O[len[s]+len[t]] | ||
Trung cấp pop [2] | Chèn | Nhận mục | Thiết lập các mục |
Xóa mục | Lặp đi lặp lại | ||
Nhận lát | Được] | ||
Del lát | Đặt lát | ||
O [k+n] | Được] | Nhận mục | |
Thiết lập các mục | Đặt lát | O [k+n] |
Mở rộng [1]
- Loại
O [n log n]
nhân
O [nk]
Hoạt động | Trường hợp trung bình | Đã khấu hao trường hợp xấu nhất |
x trong s | O [1] | Trên] |
tối thiểu, tối đa | Trên] | Trên] |
Nối [1] | O [1] | Trên] |
O [1] | O [1] | Trên] |
Pop cuối cùng | O [1] | Trên] |
Trung cấp pop [2] | Trên] | Trên] |
Chèn
Nhận mục
Thiết lập các mụck from a list of size n shifts all elements after k by one slot to the left using memmove. n - k elements have to be moved, so the operation is O[n - k]. The best case is popping the second to last element, which necessitates one move, the worst case is popping the first element, which involves n - 1 moves. The average case for an average value of k is popping the element the middle of the list, which takes O[n/2] = O[n] operations.
Xóa mục