Опубликован: 14.06.2015 | Уровень: для всех | Доступ: платный
Самостоятельная работа 8:

Списки

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

16.3. Обход списка

Наиболее общий путь обхода элементов списка - использование цикла for.

Похожий синтаксис используется для обхода строк:

>>> for cheese in cheeses:
           print cheese
           
           
Cheddar
Edam
Gouda

Это замечательно работает, если вам необходимо прочитать элементы списка. Но если вы хотите записать или обновить элементы, понадобятся индексы. Общий подход, чтобы это сделать - объединить функции range и len:

>>> for i in range(len(numbers)):
              numbers[i] = numbers[i] * 2
              
>>> print numbers
[34, 10]

Этот цикл обходит список и обновляет каждый элемент. len возвращает число элементов в списке. range возвращает список индексов от 0 до n-1, где n - длина списка. За каждый шаг в цикле переменной i присваивается индекс следующего элемента. Выражение присваивания в теле цикла использует i для чтения старого значения элемента и записи нового значения.

При обходе пустого списка в цикле for никогда не выполнится тело цикла:

>>> for x in empty:
           print 'This never happens.'

Хотя список может содержать другой список, вложенный список считается одним элементом. Длина списка будет равна четырем:

>>> len(['spam', 1, ['Brie', 'Roquefort', 'Pol le Veq'], [1, 2, 3]])
4

16.4. Операторы списка

Оператор + объединяет списки:

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = a + b
>>> print c
[1, 2, 3, 4, 5, 6]

Аналогичным образом, оператор * повторяет список заданное число раз:

>>> [0] * 4
[0, 0, 0, 0]
>>> [1,2,3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

16.5. Срез списка

Оператор среза также работает для списков:

>>> t = ['a', 'b', 'c', 'd', 'e', 'f']
>>> t[1:3]
['b', 'c']
>>> t[:4]
['a', 'b', 'c', 'd']
>>> t[3:]
['d', 'e', 'f']

Если опустить первый индекс, то срез начнется с начала. Если опустить второй - срез закончится в конце. Если опустить оба значения, то срез будет являться копией всего списка.

>>> t[:]
['a', 'b', 'c', 'd', 'e', 'f']

Т.к. списки можно изменять то, часто создается копия перед выполнением операций, которые складывают, удлиняют или искажают списки.

Оператор среза в левой части выражения может обновить несколько элементов:

>>> t = ['a', 'b', 'c', 'd', 'e', 'f']
>>> t[1:3] = ['x','y']
>>> print t
['a', 'x', 'y', 'd', 'e', 'f']
< Самостоятельная работа 1 || Самостоятельная работа 8: 12345
Алексей Виноградов
Алексей Виноградов

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

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

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

Александр Душечкин
Александр Душечкин
Россия, Ижевск, ИжГТУ, 2002
Дмитрий Голиков
Дмитрий Голиков
Россия