在Python3.5+;中创建列表的浅层副本的最快方法是什么;?
在Python3.5+中,有几种替代方法可以创建浅的在Python3.5+;中创建列表的浅层副本的最快方法是什么;?,python,python-3.x,performance,copy,shallow-copy,Python,Python 3.x,Performance,Copy,Shallow Copy,在Python3.5+中,有几种替代方法可以创建浅的列表副本。显而易见的是: some\u list.copy() 一些列表[:] list(一些列表) [*一些列表] 和其他人 哪种方法最快 注意: 虽然这个问题与“列表副本”有关,但它只涉及Python 3.5+中的性能。如果您需要回答“为什么需要Python中列表的副本?”或“Python中列表的浅拷贝和深拷贝有什么区别?”的问题,请阅读以下内容: 这个问题唯一合理的答案是比较它们的执行时间。由于这个问题涉及到Python 3.5+,我
列表副本。显而易见的是:
some\u list.copy()
一些列表[:]
list(一些列表)
[*一些列表]
- 和其他人李>
哪种方法最快
注意:
虽然这个问题与“列表副本”有关,但它只涉及Python 3.5+中的性能。如果您需要回答“为什么需要Python中列表的副本?”或“Python中列表的浅拷贝和深拷贝有什么区别?”的问题,请阅读以下内容:
这个问题唯一合理的答案是比较它们的执行时间。由于这个问题涉及到Python 3.5+,我记得在Python 3.5中,这个问题是被批准的,结果是[*一些列表]
是在Python 3.5+中制作列表的浅层副本的最快方法,下面给出了度量。当然,制作副本的方法还有很多,但我将重点介绍以下方法:
some\u list.copy()
一些列表[:]
list(一些列表)
[*一些列表]
从副本导入副本;复制(一些列表)
请记住,这些时间是相对的,但趋势应该是相似的。
从下图可以看出,当len(some_list)>=1000时,所有变量的行为大致相同:
但是在len(some_list)<1000
我们有一个明显的赢家,它是[*some_list]
:
这些测量是用Python 3.6.3和Windows 7执行的。您应该对各种选项计时,然后查看。这些线会聚在一起,因此正确的答案似乎是“一切都一样”。除了非常小的列表,在这种情况下,答案是“谁在乎”;)@zvone的人有很多很小的名单,这是谁在乎的:-)(也许)。另一个选项是some_list*1
,我发现这是值得注意的,因为它在我自己的测试中是第二快的(只被[*some_list]
击败)而且很短。除非副本是其他循环的内部循环,否则重复执行循环。。