На практике довольно часто возникает необходимость в изменении строк, но напрямую мы этого сделать не можем (строки относятся к неизменяемому типу данных). Тогда на помощь приходят списки. Решением может стать преобразование строки в список, изменение списка и обратное преобразование списка в строку:
>>> s = 'Строка для изменения'.
>>> list.
['С, 'т 'р', 'о', 'к', 'а', ' ', 'д 'л', 'я', ' ',
'и', 'з', 'м', 'е', 'н', 'е', 'н', 'и', 'я']
>>> 1st = list (s)
>>> lst[0] = 'М' # изменяем список, полученный из строки
>>> 1st
['М', 'т', 'р', 'о', 'к', 'а', ' ', ' д', 'л', 'я', ' ',
'и', 'з', 'м', 'е', 'н', 'е', 'н', 'и', 'я']
>>> s = ''.join (1st) # преобразуем список в строку
>>> s
'Мтрока для изменения'
Отдельно остановимся на использовании строкового метода join:
" А = ['red', 'green', 'blue']
>" ' '. join (A)
'red green blue'
>" ' '. join (A)
'redgreenblue'
«>. ***. e join (A)
'red***green***blue'
Строковый метод join принимает в качестве аргумента список, который необходимо преобразовать в строку, а в качестве строкового объекта указывается соединитель элементов списка.
Похожим образом можно преобразовать число в список (на промежуточном этапе используется строка) и затем изменить полученный список:
«> п = 73 485 384 753 846 542 336
>>> list (str (n)) # число преобразуем в строку, затем
# строку в список
['7', '3', '4', '8', '5', '3', '8', '4', '7', '5', '3',
•8', '4', '6', '5', '3', '8', '4', '6', '5']
Если строка содержит разделитель, то ее можно преобразовать в список с помощью строкового метода split, который по умолчанию в качестве разделителя использует пробел:
>" s = 'd a dd dd gg rr tt yy rr ее', split ()
>" s
['d', ' a', 'dd', 'dd', 'gg', 'rr', 'tt', 'yy', 'rr', 'ее']
Вызов метода split с разделителем
>" s = 'd:a:dd:dd:gg:rr:tt:yy:rr:ee'.split («:»)
>>> s
['d', 'a', 'dd', 'dd', 'gg', 'rr', '11', 'yy', 'rr', 'ее']
Вложенные списки
Ранее уже упоминалось, что в качестве элементов списка могут находиться объекты любого типа (класса), например списки:
«> 1st = [['А', 1], ['В', 2], [ 'С, 3] ]
>>> 1st
[['А', 1], ['В', 2], ['С, 3]]
>" lst[0]
['А', 1]
Рис. 4.33. Схема памяти при работе Python с вложенными списками
Подобные структуры данных используются для хранения матриц. Обращение к вложенному списку происходит через указание двух индексов (индекс внешнего списка и индекс вложенного списка):
«> 1st [0] [1]
1
Схематично вложенные списки показаны на рис. 4.33.