Это мой первый вопрос на форуме, и я тоже очень новичок в Python, так что, возможно, это не имеет большого смысла, но мне просто не интересно ...Нарезка списка без копирования
Это очень связано, но IMO этот вопрос Slicing a list in Python without generating a copy не отвечает на вопрос о том, как разрезать список таким образом, что изменение среза изменит оригинал?
Скажем, если я хочу, чтобы изменить только часть списка в функции и убедитесь, что функция не имеет доступа ко всем членам, как я пишу это:
def myFunc(aList):
for i in range(0,len(aList)):
aList[i] = 0
wholeList = range(0,10)
partOfList = wholeList[3:6]
myFunc(partOfList)
так, что в конце wholeList
будет
[0, 1, 2, 0, 0, 0, 6, 7, 8, 9]
??
Я думаю, что это сработало бы, если бы содержимое wholeList
было изменчивыми объектами, но с числами это единственный способ вернуть myFunc
сменившийся список и назначить в рабочей области?
Спасибо за разъяснение. Эта концепция списка, содержащая только ссылки на реальные объекты, более или менее понятна мне ... Я думаю, что я действительно пытался спросить, можно ли создать 'partOfList', который будет содержать те же ссылки, что и' wholeList ', но не все из них. Таким образом, можно изменять только часть 'wholeList' без явного назначения. Я предполагаю, что короткий ответ - «нет». – Juspe
@ Juspe Правильно, это просто списки ссылок, изменение одного элемента списка не будет отражать ни в каких других списках **, пока эти объекты неизменяемы **. Если они являются изменяемыми объектами, то их можно изменить «через срез» для каждого. – Jkdc