當您運行以下代碼時,追加時間會隨着時間的推移而延長10倍。爲什麼追加大字符串時,Python中的追加操作會變慢?
from datetime import datetime
test = []
for i in range(30000):
time_before_append = datetime.now()
test.append("testeafda" * 100000)
time_after_append = datetime.now()
print(time_after_append - time_before_append)
我知道append一般是O(1)。這是否涉及垃圾回收,調整大小的列表,內存使用情況和/或其他內容?試圖瞭解Python的內部工作原理。
這就像30千兆字節的字符串,你在那裏建立。你甚至有30千兆字節的RAM? – user2357112
您正在一個循環中添加1 MB數據30k次,您想知道爲什麼它很慢?另外,由於字符串是不可變的,所以''testeafda「* 100000'將不得不重建字符串100,000次。如果您在循環之外預定義該字符串並將其附加到列表中,而不是重新構建每個迭代,則會立即加速。 – blakev