Все целые числа в строковом представлении перевести в int
Дан вложенный список. Максимальный уровень вложения - 3. Все элементы списка и подсписков представлены в виде строки.
data = [['Иванов', '1996', '01.01.1987'],
'2023',
['5000110'],
['Видеокарта', 'GeForce 210', ['PCI-E 2.0', 'GDDR3', '460', 'DVI-I, HDMI, VGA (D-Sub)','2560x1600'], '3999', '1', '34', '17.56'],
['LGA 1700', '3xPCI-Ex16', 'TOMAHAWK WIFI', ['Alder Lake', 'Raptor Lake'], '256', ['305', '244'], 'мм', '19799']]
Пользователь добавляет в конец списка произвольное значение, после чего список корректируется.
При корректировке те элементы, которые можно перевести из строки в число, необходимо заменить на число.
Например, '256' перевести в 256 и т.д.
Результат представить в виде списка с корректированными значениями.
data = [['Иванов', '1996', '01.01.1987'],
'2023',
['5000110'],
['Видеокарта', 'GeForce 210', ['PCI-E 2.0', 'GDDR3', '460', 'DVI-I, HDMI, VGA (D-Sub)','2560x1600'], '3999', '1', '34', '17.56'],
['LGA 1700', '3xPCI-Ex16', 'TOMAHAWK WIFI', ['Alder Lake', 'Raptor Lake'], '256', ['305', '244'], 'мм', '19799']]
a = input()
data.append(a)
for row in data:
for j in row:
for elem in j:
if elem.isdigit():
elem = int(elem)
print(data)
Ответы (1 шт):
def convert(value):
try:
return int(value)
except ValueError:
try:
return float(value)
except ValueError:
return value
def process_list(x):
result = []
for i in x:
if isinstance(i, list):
result.append(process_list(i))
else:
result.append(convert(i))
return result
data = [['Иванов', '1996', '01.01.1987'],
'2023',
['5000110'],
['Видеокарта', 'GeForce 210', ['PCI-E 2.0', 'GDDR3', '460', 'DVI-I, HDMI, VGA (D-Sub)','2560x1600'], '3999', '1', '34', '17.56'],
['LGA 1700', '3xPCI-Ex16', 'TOMAHAWK WIFI', ['Alder Lake', 'Raptor Lake'], '256', ['305', '244'], 'мм', '19799']]
user_input = input("Введите значение: ")
data.append(user_input)
result_data = process_list(data)
print(result_data)
Convert - берём строку и пытаемся преобразовать в число. Если невозможно, то оставляет исходные данные.
Process_list - рекурсивная функция принимает список и проходит по нему. Если элемент списка является подсписком, функция вызывает саму себя рекурсивно для обработки внутреннего списка. В противном случае, применяет convert к элементу.
Остальное понятно, думаю.