Как назначить новый список списку, переданному в качестве аргумента? - PullRequest
0 голосов
/ 26 сентября 2018

Я выполняю API для функции, которую нужно взять в список, сделать копию с некоторыми изменениями и затем установить параметр out в качестве копии.то есть функция ничего не возвращает, но должна изменить объект списка, который был передан в качестве аргумента.

Примерно так:

l = [1,2,3]

def f(passed_in_list):
   different_list = [4,5,6]
   passed_in_list = different_list[:]

print(l)   # Prints [1,2,3]. How to make it [4,5,6] ?

Как мне этого добиться?

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Вы должны фактически вызвать вашу функцию:

l = [1,2,3]

def f(passed_in_list):

   passed_in_list[:] = [4,5,6]

f(l)

print(l)

Выход:

[4, 5, 6]
0 голосов
/ 26 сентября 2018

Вам нужно изменить список, а не переменную, которая на него указывает.И как уже упоминалось, вам нужно вызвать эту функцию:

l = [1,2,3]


def f(passed_in_list):
   different_list = [4,5,6]
   passed_in_list[:] = different_list[:]


f(l)
print(l)
0 голосов
/ 26 сентября 2018

Мне кажется, что это опасный шаблон проектирования, создание функции с преднамеренными побочными эффектами в глобальном масштабе.Я был бы осторожен, делая такие вещи.При этом не похоже, что вы вызвали свою функцию, поэтому, возможно, вы не видите того, что ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...