Видеокурс выложен на сайте Altube.ru вместо Youtube и плеер Altube не поддерживает субтитры. Прошу решить вопрос о предоставлении русских субтитров в этом англоязычном видеокурсе. |
Списки
16.13. Список аргументов
Когда вы передаете список в функцию, функция получает ссылку на список.
Если функция изменяет параметр-список, вызывающий видит изменения.
Например, delete_head удаляет первый элемент из списка:
>>> def delete_head(t): del t[0] >>> letters = ['a', 'b', 'c'] >>> delete_head(letters) >>> print letters ['b', 'c']
Параметр t и переменная letters - псевдонимы для одного и того же объекта. Схема стека выглядит следующим образом:
Поскольку список является общим для двух фреймов, я изобразил его между ними.
Важно различать операции, изменяющие списки и операции, которые создают новые списки. Например, метод append изменяет список, оператор + создает новый список:
>>> t1 = [1, 2] >>> t2 = t1.append(3) >>> print t1 [1, 2, 3] >>> print t2 None >>> t3 = t1 + [3] >>> print t3 [1, 2, 3, 3] >>> t2 is t3 False
Это различие очень важно, когда вы пишете функции, которые должны изменять списки. Например, эта функция не удаляет первый элемент списка:
def bad_delete_head(t): t = t[1:] # WRONG!
Оператор среза создает новый список и присваивает t указатель на него, но это никак не отражается на списке, который был передан в качестве аргумента.
В качестве альтернативы можно написать функцию, которая создает и возвращает новый список. Например, tail возвращает все, кроме первого элемента списка:
def tail(t): return t[1:]
Эта функция оставляет первоначальный список без изменений. Вот как она используется:
>>> letters = ['a', 'b', 'c'] >>> rest = tail(letters) >>> print rest ['b', 'c']
16.15. Словарь
aliasing: A circumstance where two or more variables refer to the same object.
delimiter: A character or string used to indicate where a string should be split.
element: One of the values in a list (or other sequence), also called items.
equivalent: Having the same value.
index: An integer value that indicates an element in a list.
identical: Being the same object (which implies equivalence).
list traversal: The sequential accessing of each element in a list.
nested list: A list that is an element of another list.
object: Something a variable can refer to. An object has a type and a value.
reference: The association between a variable and its value.