Если у меня естьКак передать кусок в функцию по ссылке
a = [1, 2, 3]
def foo (arr):
for i in len (arr): arr [i] += 1
def bar (arr):
foo (arr[:2])
bar (a)
print (a)
Я хочу, чтобы результат как
>>> [2, 3, 3 ]
Как я могу идти об этом?
Мотивация: мне нужна очередь приоритетов, где я могу заморозить последние N
элементов, т.е. только пройти queue[:N]
до heapq.heappush()
. Но каждый раз, когда я передаю фрагмент, к нему или к какой-либо функции вообще, он отправляет копию фрагмента, а не фактический список функции, и поэтому мой список остается неизменным в конце.
У вас есть еще одна проблема: 'для элемента в arr: item + = 1' также не изменит список. –
Создание среза массива делает другой объект. –
и что такое 'arr [: 2])' когда вывод '[2, 3, 4]' (добавляет 1 ко всем элементам) –