Hướng dẫn python list delete time complexity - danh sách python xóa thời gian phức tạp

  • Tổng quan
      • list.remove()
  • 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
      • Độ phức tạp không gian
  • Bài đăng này có hữu ích không?

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 về thời gian

Độ 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

Độ phức tạp thời gian của việc loại bỏ trong Python là gì?

Độ phức tạp thời gian chạy của tập hợp.loại bỏ () hàm trên một tập hợp với n phần tử là O (1).Vì vậy, bộ của Python.phương thức loại bỏ () có độ phức tạp thời gian chạy không đổi.O(1). So, Python's set. remove() method has constant runtime complexity.

Độ phức tạp thời gian của việc loại bỏ là gì?

Độ phức tạp thời gian của phương pháp xóa (chỉ số int) là O (n).Lý do: ArrayList thực hiện giao diện RandomAccess, do đó, việc truy cập bất kỳ phần tử ngẫu nhiên nào sẽ được thực hiện trong độ phức tạp O (1).Tuy nhiên, vì các yếu tố còn lại cũng cần phải được dịch chuyển bởi một nơi sang trái của chúng, sự phức tạp về thời gian tổng thể trở thành O (n).O(N). Reason: ArrayList implements RandomAccess interface, so accessing any random element will be done in O(1) complexity. However, since the remaining elements also need to be shifted by one place to their left, the overall time complexity becomes O(N).

Có đang xóa một phần tử O 1 không?

Loại bỏ một phần tử ở cuối là O (1) vì không có sự thay đổi. because there is no shifting.

Sự phức tạp về thời gian của danh sách trong Python là gì?

Độ phức tạp thời gian trung bình của toán tử trong danh sách là O (N).Nó trở nên chậm hơn khi có nhiều yếu tố.Thời gian thực hiện thay đổi rất nhiều tùy thuộc vào vị trí của giá trị cần tìm.Phải mất nhiều thời gian nhất khi giá trị của nó ở cuối hoặc không tồn tại.O(n) . It becomes slower when there are many elements. The execution time varies greatly depending on the position of the value to look for. It takes the longest time when its value is at the end or does not exist.