簡體   English   中英

在Python3.5 +中制作列表的淺表副本的最快方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM