Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更新列表会占用额外的空间吗?_Python_Space Complexity - Fatal编程技术网

Python 更新列表会占用额外的空间吗?

Python 更新列表会占用额外的空间吗?,python,space-complexity,Python,Space Complexity,我有一个数组或列表, 现在我想对数组进行一些更改,并将其放回到arr变量/列表中。我在使用额外的空间吗?还是同一个变量再次更新 arr = [1,2,3,4] print arr[2:] + arr[:2] # Is is using extra space #or arr = arr[2:] + arr[:2] # Is is using extra space #or arr = [1,2,3,4] arr = arr # are not they both same? LHS arr is

我有一个
数组或列表
, 现在我想对数组进行一些更改,并将其放回到
arr
变量/列表中。我在使用额外的空间吗?还是同一个变量再次更新

arr = [1,2,3,4]
print arr[2:] + arr[:2] # Is is using extra space
#or
arr = arr[2:] + arr[:2] # Is is using extra space
#or
arr = [1,2,3,4]
arr = arr # are not they both same? LHS arr is different from RHS arr

这样分配时:

arr = arr[2:] + arr[:2]
您正在创建一个新的
arr
引用,旧的引用将被销毁。指分配/删除

您应该执行切片分配:

arr
保持相同的引用,如果大小不变,则不会为
arr
分配内存(但右侧求和和和切片仍需要分配)

演示:

结果:
False

arr = [1,2,3,4]
old_arr = arr
arr[:] = arr[2:] + arr[:2]
print(old_arr is arr)

结果:
True

这样分配时:

arr = arr[2:] + arr[:2]
您正在创建一个新的
arr
引用,旧的引用将被销毁。指分配/删除

您应该执行切片分配:

arr
保持相同的引用,如果大小不变,则不会为
arr
分配内存(但右侧求和和和切片仍需要分配)

演示:

结果:
False

arr = [1,2,3,4]
old_arr = arr
arr[:] = arr[2:] + arr[:2]
print(old_arr is arr)
结果:
True

存储在内存中的某个位置
arr
引用了
arr[2://code>引用了与
arr
引用的
相同的

对于数字列表,您正在为这些引用使用额外的空间,而不是数字本身

对于高调对象的列表,这实际上是一种更有效的内存处理方法

我建议通读以下内容:

存储在内存中的某个位置
arr
引用了
arr[2://code>引用了与
arr
引用的
相同的

对于数字列表,您正在为这些引用使用额外的空间,而不是数字本身

对于高调对象的列表,这实际上是一种更有效的内存处理方法

我建议通读以下内容:

您对“LHS arr不同于RHS arr”是什么意思?您对“LHS arr不同于RHS arr”是什么意思?