Kích thước của tuple python
Python có hai loại trình tự tương tự như bộ dữ liệu và danh sách. Sự khác biệt nổi tiếng nhất giữa chúng là bộ dữ liệu là bất biến, nghĩa là bạn không thể thay đổi kích thước cũng như các đối tượng bất biến của chúng Show Nội dung chính Hiển thị Bạn không thể thay đổi các mục trong một tuple
But you could change the objects can change
Trong nội bộ, cả danh sách và bộ dữ liệu đều được phát triển như một danh sách gợi ý cho các đối tượng Python (các mục). Khi bạn xóa một mục khỏi danh sách, tham chiếu đến một mục sẽ bị hủy. Hãy nhớ rằng, mục đã bị loại bỏ có thể sống nếu có các tài liệu tham khảo khác trong chương trình của bạn bộ dữ liệuMặc dù thực tế là bộ dữ liệu ít phổ biến hơn danh sách, nhưng nó là một loại dữ liệu cơ bản, được sử dụng rất nhiều nội bộ You could not get see, but you are used Tuples when
Thông thường, một chương trình đang chạy có hàng nghìn dữ liệu được phân bổ
Danh sách trống so với bộ dữ liệu trốngTuple trống hoạt động như một singleton, nghĩa là, luôn luôn có một tuple với chiều dài bằng không. Khi tạo một Python Tuple trống, chỉ ra một cái đã được phân bổ, theo cách mà bất kỳ bộ tuple trống nào cũng có cùng địa chỉ trong bộ nhớ. Điều này có thể xảy ra bởi vì bộ dữ liệu là bất biến và đôi khi tiết kiệm rất nhiều bộ nhớ
Nhưng điều này không áp dụng cho danh sách vì chúng có thể được sửa đổi
Tối ưu hóa phân bổ cho các bộ đếm nhỏĐể giảm bộ nhớ phân mảnh và tăng tốc độ phân bổ, Python sử dụng lại các bộ dữ liệu cũ. Nếu một tuple không còn cần thiết và có ít hơn 20 mục thay vì xóa nó vĩnh viễn, Python sẽ chuyển nó sang 0Một danh sách miễn phí được chia thành 20 nhóm, trong đó mỗi nhóm đại diện cho một danh sách các bộ dữ liệu có độ dài 1 từ 0 đến 20. Mỗi nhóm có thể lưu trữ tối đa 2 000 bộ dữ liệu. First group (không) chỉ chứa 1 phần tử và đại diện cho một tuple trống
Trong ví dụ trên, chúng ta có thể thấy rằng 0 và 1 có cùng ID. Đó là bởi vì chúng tôi ngay lập tức sử dụng một tuple bị hủy trong danh sách miễn phíTối ưu hóa phân bổ cho danh sáchVì danh sách có thể được sửa đổi, Python không sử dụng tối ưu hóa giống như trong bộ dữ liệu. Tuy nhiên, danh sách Python cũng có một danh sách miễn phí, nhưng nó chỉ được sử dụng cho các đối tượng trống. Nếu một danh sách trống bị xóa hoặc được thu thập bởi GC, thì nó có thể được sử dụng lại sau đó 0Thay đổi kích thước danh sáchĐể tránh chi phí thay đổi kích thước, Python không thay đổi kích thước danh sách mỗi khi bạn cần thêm hoặc xóa một mặt hàng. Thay vào đó, mọi danh sách đều có một số vị trí trống được ẩn khỏi người dùng nhưng có thể được sử dụng cho các mục mới. Nếu các khe được tiêu thụ hoàn toàn Python quá nhiều thì không có thời gian bổ sung cho chúng. Số lượng các vị trí bổ sung được chọn dựa trên kích thước hiện tại của danh sách Tài liệu nhà phát triển mô tả nó như sau
Ví dụ. nếu bạn muốn nối một mục vào danh sách độ dài 8, Python sẽ thay đổi kích thước của nó thành 16 khe và thêm mục thứ 9. Phần còn lại của các khe sẽ được ẩn đi và dành riêng cho các mặt hàng mới Element ngày càng tăng như sau 1Màn hình diễn đànNếu bạn quan tâm đến tốc độ so sánh, có một bản tóm tắt tốt về hiệu quả tổng thể của Raymond Hettinger Danh sách có thể thay đổi kích thước không?danh sách. Resize () là một hàm tích hợp trong C++ STL được sử dụng để thay đổi kích thước thùng chứa danh sách. Nó lấy một số N làm tham số và thay đổi kích thước vùng chứa danh sách để chứa chính xác n phần tử. Nếu danh sách đã có nhiều hơn N phần tử, thì hàm sẽ xóa các phần tử khỏi danh sách ngoại trừ phần tử N đầu tiên |