Опубликован: 14.06.2015 | Доступ: свободный | Студентов: 7362 / 1131 | Длительность: 09:49:00
Авторские права: Creative Commons Attribution 3.0
Самостоятельная работа 8:

Списки

< Самостоятельная работа 1 || Самостоятельная работа 8: 12345

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: A sequence of values.

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.

< Самостоятельная работа 1 || Самостоятельная работа 8: 12345
Алексей Виноградов
Алексей Виноградов

Видеокурс выложен на сайте Altube.ru вместо Youtube и плеер Altube не поддерживает субтитры. Прошу решить вопрос о предоставлении русских субтитров в этом англоязычном видеокурсе.

Петр Олейников
Петр Олейников

Данные файлы неоходимы не только для самостоятельных работ, но и для тестов. А по ссылкам в лекциях они не доступны, выдает ошибку 404.