Как изменять элементы в двумерном массиве?

stels7579

Новичок
Пользователь
Май 2, 2020
3
0
1
Только начинаю разбираться с Питоном.
Проблема в том, что при присвоении значения в двумерном массиве выдается ошибка TypeError: 'str' object does not support item assignment.
т.е. я не могу присвоить значение элементу массива напрямую, например a[2][3] = "*".
Подскажите пожалуйста как правильно, работать
 

borntohack

змееуст
Команда форума
Модератор
Апр 22, 2020
78
62
18
39
Москва, РФ
И как же правильно написать указанное присвоение?

Пока мы не видим ваш код - сложно подсказать правильное решение.
Рискну предположить, что у вас массив вида:
Python:
lst = ["Первая строка","Вторая строка","Третья строка"]
#и вы пытаетесь сделать так:
lst[2][3] = "в" #в ожидании того, что "Третья строка" поменяется на "Тревья строка."
#Здесь возникает указанная ошибка

Можно пойти путем, который вы ожидаете - это перевести строки в списки
Python:
lst = [list("Первая строка"),list("Вторая строка"),list("Третья строка")] #или
lst = map(list, ["Первая строка","Вторая строка","Третья строка"])

lst[2][3] = "в" #теперь работает без ошибок, потому что списки [B]мутабельны[/B]

Но этот путь приведет к тому, что для вывода строку нужно "собрать". Например строковым методом join:
Python:
"".join(lst[2[)

Так же можно выполнять замены внутри строки строковыми методами replace

Или вообще переписывать строку по срезу newstr = oldstr[:3]+"в"+oldstr[4:]
 

borntohack

змееуст
Команда форума
Модератор
Апр 22, 2020
78
62
18
39
Москва, РФ
Двумерный массив - это массив массивов, а судя по вашей ошибке - у вас одномерный массив строк.
Да, строки итерабельны, и читать их можно так же, как и двумерный массив, однако строки иммутабельны, и не поддержывают прямое изменение элементов по индексу.
 

stels7579

Новичок
Пользователь
Май 2, 2020
3
0
1
И как же правильно написать указанное присвоение?
 

stels7579

Новичок
Пользователь
Май 2, 2020
3
0
1
Большое спасибо!
 

Форум IT Специалистов