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”是什么意思?