Это зависит от типа arr
, но при условии, что это list
, это O (n), так как оба среза в RHS создают новые list
объекты, хотя и временно.Эти два конкатенируются в третий новый список, элементы которого затем копируются в существующий список, на который ссылается arr
.
Вы можете достичь сложности пространства O (1), используя itertool.slice
чтобы не делать копии:
def foo(arr):
arr[:] = chain(islice(arr, 5, None), islice(arr, 5))