Python: Как все элементы многомерного списка преобразовать в строки?
Есть многомерный список, пытаюсь каждый элемент типа int преобразовать в тип str, далее то что мне нужно по плану и вернуть обратно в int (дата[5] должна сохраниться str всегда(как исключение))
z = [[17, 800, 0, 1900, 0, '2021-10-16', 0], [16, 1300, 22, 1600, 44, '2021-10-14', 55]]
z_str = list(map(str, z)) # 1 пробовал
z_str = [str(i) for i in z] # 2 пробовал
print(z_str)
ВЫВОД:
["[17, 800, 0, 1900, 0, '2021-10-16', 0]", "[16, 1300, 22, 1600, 44, '2021-10-14', 55]"]
делает строку из списка в списке .о_О.
Мне нужно вот так:
[['17', '800', '0', '1900', '0', '2021-10-16', '0'], ['16', '1300', '22', '1600', '44', '2021-10-14', '55']]
Ответы (3 шт):
Автор решения: Dmitry
→ Ссылка
Попробуйте такой вариант:
z = [[17, 800, 0, 1900, 0, '2021-10-16', 0], [16, 1300, 22, 1600, 44, '2021-10-14', 55]]
z_str = []
for i in z:
z_str.append(list(map(str, i)))
print(z_str)
Циклом "извлекаем" подмножество и уже в нём, непосредственно, преобразуем элементы.
Автор решения: llollcat
→ Ссылка
Как писал выше asanisimov, нужно объединить два способа:
z = [[17, 800, 0, 1900, 0, '2021-10-16', 0], [16, 1300, 22, 1600, 44, '2021-10-14', 55]]
z_str = [list(map(str, i)) for i in z]
print(z_str)
Автор решения: Andy Pavlov
→ Ссылка
Я бы прошелся двойным циклом с проверкой на тип int содержимого. Если выполняется, то преобразуем в строку:
z = [[17, 800, 0, 1900, 0, '2021-10-16', 0], [16, 1300, 22, 1600, 44, '2021-10-14', 55]]
z_to_str = [[str(e) if isinstance(e, int) else e for e in row] for row in z]