Мелкая копия: неправильная документация Python.org?Python

Программы на Python
Anonymous
 Мелкая копия: неправильная документация Python.org?

Сообщение Anonymous »

Является ли официальная документация на python.org неверна, или я не ошибался что -то неправильно? Можно найти следующее описание о списках копирования: < /p>

Простая задача в Python никогда не копирует данные. Когда вы назначаете список переменной, переменная относится к существующему списку. Любые изменения, которые вы вносите в список через одну переменную, будут рассматриваться через все другие переменные, которые относятся к нему .:

Код: Выделить всё

>>> rgb = ["Red", "Green", "Blue"]
>>> rgba = rgb
>>> id(rgb) == id(rgba)  # they reference the same object True
>>> rgba.append("Alph")
>>> rgb ["Red", "Green", "Blue", "Alph"]
< /code>
< /blockquote>
Поэтому я понимаю, что новый список - это ссылка на исходный список. Но сразу же, документация гласит: < /p>

Все операции среза возвращают новый список, содержащий запрошенные элементы. Это означает, что следующий срез возвращает мелкую копию списка: < /p>
>>> correct_rgba = rgba[:]
>>> correct_rgba[-1] = "Alpha"

>>> correct_rgba ["Red", "Green", "Blue", "Alpha"]

>>> rgba ["Red", "Green", "Blue", "Alph"]
< /code>
< /blockquote>
Итак, если я правильно понимаю: < /p>
[list]
[*]rgba[:]
- операция среза
[*] Это делает мелкую копию исходного списка
[*] Считывает данные из Оригинал, в новый список, который не является ссылкой на оригинал < /li>
< /ul>
Но: < /p>

После прочтения о разнице между мелководьями и deep , я понимаю, что мелкие копии являются ссылками на их оригинал, в то время как < EM> Глубокие копии являются независимыми (незащитными) копиями
[*] В примере выше, документация создает Deep Copy , но упоминает его как мелкая копия ?
[/list]

Подробнее здесь: https://stackoverflow.com/questions/782 ... tion-wrong

Вернуться в «Python»