正在逆转python列表的一部分

时间:2017-11-12 16:53:03

标签: python list reverse

以下列方式反转数组的一部分是否会创建从i到j的数组副本?

a[i:j] = a[i:j][::-1] # is this in place? Does this operation require O(j-i) space

以下代码是否不占用任何额外空间?

a[i:j] = reversed(a[i,j])

除了下面的代码之外,还有其他方法可以用O(1)空间来反转部分列表吗?

for k in range(i, i + (j-i + 1)//2):
  arr[k], arr[j-k] = arr[j-k], arr[k]

1 个答案:

答案 0 :(得分:2)

有点儿。 a已就地修改,但a[i:j]创建了一个新的列表对象,将[::-1]应用于a[i:j]也是如此。

b = a[i:j]  # new list object
b = b[::-1] # another new list object
a[i:j] = b  # modifies a in place