正在反转 python 列表的一部分
Is reversing part of python list in place
按以下方式反转数组的一部分是否会创建从 i 到 j 的数组副本?
a[i:j] = a[i:j][::-1] # is this in place? Does this operation require O(j-i) space
下面的代码是不是需要额外的space?
a[i:j] = reversed(a[i,j])
那么除了以下代码之外,还有其他方法可以使用 O(1) space 反转列表的一部分吗?
for k in range(i, i + (j-i + 1)//2):
arr[k], arr[j-k] = arr[j-k], arr[k]
有点。 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
按以下方式反转数组的一部分是否会创建从 i 到 j 的数组副本?
a[i:j] = a[i:j][::-1] # is this in place? Does this operation require O(j-i) space
下面的代码是不是需要额外的space?
a[i:j] = reversed(a[i,j])
那么除了以下代码之外,还有其他方法可以使用 O(1) space 反转列表的一部分吗?
for k in range(i, i + (j-i + 1)//2):
arr[k], arr[j-k] = arr[j-k], arr[k]
有点。 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