[英]What is the fastest way to make a shallow copy of list in Python3.5+?
在Python 3.5+中,可以使用幾種方法來對list
進行淺表復制。 顯而易見的是:
some_list.copy()
some_list[:]
list(some_list)
[*some_list]
哪種方法最快?
注意 :雖然此問題與“列表的副本”有關,但僅涉及Python 3.5+中的性能。 如果您需要回答“ 為什么需要在Python中復制列表? ”或“ 在Python中 淺 復制和 深 復制之間有 什么區別? ”的問題,請閱讀以下內容: 如何克隆或復制a清單?
這個問題的唯一合理答案是比較它們的執行時間。 由於問題涉及Python 3.5+,所以我會回想起在Python 3.5中, PEP [*some_list]
附加拆包泛化已獲得批准,事實證明[*some_list]
是在Python 3.5+中對列表進行淺表復制的最快方法。 ,測量結果顯示如下。 當然,還有許多其他方法可以制作副本,但我將重點介紹以下內容:
some_list.copy()
some_list[:]
list(some_list)
[*some_list]
from copy import copy; copy(some_list)
請記住,這些時間是相對的,但是趨勢應該相似。 從下面的圖可以看出,當len(some_list) >= 1000
時,所有變體的行為大致相同:
但是當len(some_list) < 1000
我們有一個明顯的贏家,它是[*some_list]
:
測量是使用Python 3.6.3,Windows 7執行的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.