Skip to main content
 首页 » 编程设计

python之在 Python3.5+ 中制作列表的浅拷贝的最快方法是什么

2025年05月04日15dyllove98

在 Python 3.5+ 中制作 shallow list 副本有多种选择。最明显的是:

  • some_list.copy()
  • some_list[:]
  • 列表(some_list)
  • [*some_list]
  • 和其他人...

哪种方法最快?

注意: 虽然这个问题与“列表的副本”有关,但它仅涉及 Python 3.5+ 中的性能。如果您需要回答“为什么需要 Python 中的列表副本?”或“Python 中列表的浅拷贝和深拷贝有什么区别?”阅读以下内容: How to clone or copy a list?

请您参考如下方法:

这个问题唯一合理的答案是比较它们的执行时间。由于问题涉及 Python 3.5+,我会记得在 Python 3.5 中 PEP 448 -- Additional Unpacking Generalizations被批准了,结果是 [*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 进行的。