Tôi thấy một số mâu thuẫn khi sử dụng sys.getsizeof
về danh sách giống hệt nhau. (Python 2.7.5)Tại sao tạo danh sách từ danh sách làm cho danh sách lớn hơn?
>>> lst = [0,1,2,3,4,5,6,7,8,9]
>>> sys.getsizeof(lst)
76
>>> lst2 = list(lst)
>>> sys.getsizeof(lst2)
104
>>> lst3 = list(lst2)
>>> sys.getsizeof(lst3)
104
>>> sys.getsizeof(lst[:])
76
>>> sys.getsizeof(lst2[:])
76
Có ai có giải thích đơn giản không?
Tôi đoán, được hỗ trợ bởi không có bằng chứng nào: danh sách phân bổ bộ nhớ thừa trước thời hạn, do đó các hoạt động 'append' trong tương lai có khấu hao O (1) phức tạp. Có lẽ sự khác biệt về kích thước là do số lượng bộ nhớ phân bổ bổ sung khác nhau. – Kevin
@Kevin, bạn có thể đúng khi sử dụng 'lst2 = lst [:]' trả về cùng kích thước –