Преобразование других типов данных в списки с помощью функции list()
Функция list() преобразует другие типы данных в списки. В следующем примере строка преобразуется в список, состоящий из односимвольных строк:
>>>> list('cat')
>['c', 'a', 't']
В этом примере кортеж (этот тип мы рассмотрим сразу после списков) преобразуется в список:
>>>> a_tuple = ('ready', 'fire', 'aim')
>>>> list(a_tuple)
>['ready', 'fire', 'aim']
Как я упоминал в подразделе «Разделяем строку с помощью функции split()» раздела «Строки» главы 2, можно использовать функцию split(), чтобы преобразовать строку в список, указав некую строку-разделитель:
>>>> birthday = '1/6/1952'
>>>> birthday.split('/')
>['1', '6', '1952']
Что, если в оригинальной строке содержится несколько включений строки-разделителя подряд? В этом случае в качестве элемента списка вы получите пустую строку:
>>>> splitme = 'a/b//c/d///e'
>>>> splitme.split('/')
>['a', 'b', '', 'c', 'd', '', '', 'e']
Если бы вы использовали разделитель //, состоящий из двух символов, то получили бы следующий результат:
>>>> splitme = 'a/b//c/d///e'
>>>> splitme.split('//')
>>>>
>['a/b', 'c/d', '/e']
Получение элемента с помощью конструкции [смещение]
Как и для строк, вы можете извлечь одно значение из списка, указав его смещение:
>>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>>> marxes[0]
>'Groucho'
>>>> marxes[1]
>'Chico'
>>>> marxes[2]
>'Harpo'
Опять же, как и в случае со строками, отрицательные индексы отсчитываются с конца строки:
>>>> marxes[-1]
>'Harpo'
>>>> marxes[-2]
>'Chico'
>>>> marxes[-3]
>'Groucho'
>>>>
Смещение должно быть корректным значением для списка — оно представляет собой позицию, на которой располагается присвоенное ранее значение. Если вы укажете позицию, которая находится перед списком или после него, будет сгенерировано исключение (ошибка). Вот что случится, если мы попробуем получить шестого брата Маркс (Marxes) (смещение равно 5, если считать от нуля) или же пятого перед списком:
>>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>>> marxes[5]
>Traceback (most recent call last):
>···File "", line 1, in
>IndexError: list index out of range
>>>> marxes[-5]
>Traceback (most recent call last):
>···File "", line 1, in
>IndexError: list index out of range