Преобразование строк в целые числа: списки Python
Быстрый ответ
Чтобы преобразовать элементы строкового типа во всех вложенных списках в целые числа, используйте вложенные списковые включения с функцией int()
:
nested_list = [['1', '2'], ['3', '4']]
integers = [[int(element) for element in sublist] for sublist in nested_list]
В итоге, переменная integers
будет хранить значение [[1, 2], [3, 4]]
.
Обработка нечисловых строк
Если ваши данные содержат нечисловые строки или символы, важно защитить свой код от возможных ошибок. Для этого можно отфильтровать такие случаи с помощью метода str.isdigit()
, избегая возникновения ошибки ValueError
:
integers = [[int(number) for number in sublist if number.isdigit()] for sublist in nested_list]
Возвращение в прошлое: Python 2
Если вы используете Python 2, аналогичную задачу можно решить с помощью функции map
:
integers = map(lambda sublist: map(int, sublist), nested_list)
Необходимо учесть, что в Python 3 функция map
возвращает не список, а объект map, поэтому чтобы получить список, его нужно преобразовать функцией list()
.
Визуализация
Введем наше преобразование более наглядно:
Преобразование:
"Старый сад" (🌼🌼🌼): [["9", "7"], ["4', "5"]]
|
| Числа "9" и "7" раскрывают свою истинную природу...
v
"Новый сад" (🦋🦋🦋): [[9, 7], [4, 5]]
Обработка строк с десятичными точками или символами валют
Если строки содержат десятичные знаки или символы валют, сначала используйте функцию float()
, а после этого преобразуйте значение в int
:
integers = [[int(float(value.strip('$'))) for value in sublist] for sublist in nested_list]
Охрана последовательности типов данных
Если исходные данные содежат кортежи, чтобы сохранить структуру кортежей, можно использовать такое преобразование:
tuples = [(1, '2'), ('3', 4)]
int_tuples = [tuple(int(n) if isinstance(n, str) else n for n in tuple) for tuple in tuples]
Это позволит сохранить последовательность типов данных, обеспечивая корректность работы кода.
Полезные материалы
- List Comprehensions в Python: наглядное объяснение
- Встроенные функции — Python 3.12.2 документация
- Вглубь вложенных списковых включений в Python — /var/
- Как конвертировать списки в строки – учебник от DigitalOcean
- Выразительность лямбда-выражений в Python: объяснение с примерами – Afternerd
- Встроенные функции — Python 3.12.2 документация
- Использование F-строк в Python для интерполяции и форматирования строк – Real Python