Преобразование строк в целые числа: списки Python

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы преобразовать элементы строкового типа во всех вложенных списках в целые числа, используйте вложенные списковые включения с функцией int():

Python
Скопировать код
nested_list = [['1', '2'], ['3', '4']]
integers = [[int(element) for element in sublist] for sublist in nested_list]

В итоге, переменная integers будет хранить значение [[1, 2], [3, 4]].

Кинга Идем в IT: пошаговый план для смены профессии

Обработка нечисловых строк

Если ваши данные содержат нечисловые строки или символы, важно защитить свой код от возможных ошибок. Для этого можно отфильтровать такие случаи с помощью метода str.isdigit(), избегая возникновения ошибки ValueError:

Python
Скопировать код
integers = [[int(number) for number in sublist if number.isdigit()] for sublist in nested_list]

Возвращение в прошлое: Python 2

Если вы используете Python 2, аналогичную задачу можно решить с помощью функции map:

Python
Скопировать код
integers = map(lambda sublist: map(int, sublist), nested_list)

Необходимо учесть, что в Python 3 функция map возвращает не список, а объект map, поэтому чтобы получить список, его нужно преобразовать функцией list().

Визуализация

Введем наше преобразование более наглядно:

Markdown
Скопировать код
Преобразование:

"Старый сад" (🌼🌼🌼): [["9", "7"], ["4', "5"]]
   |
   | Числа "9" и "7" раскрывают свою истинную природу...
   v
"Новый сад" (🦋🦋🦋): [[9, 7], [4, 5]]

Обработка строк с десятичными точками или символами валют

Если строки содержат десятичные знаки или символы валют, сначала используйте функцию float(), а после этого преобразуйте значение в int:

Python
Скопировать код
integers = [[int(float(value.strip('$'))) for value in sublist] for sublist in nested_list]

Охрана последовательности типов данных

Если исходные данные содежат кортежи, чтобы сохранить структуру кортежей, можно использовать такое преобразование:

Python
Скопировать код
tuples = [(1, '2'), ('3', 4)]
int_tuples = [tuple(int(n) if isinstance(n, str) else n for n in tuple) for tuple in tuples]

Это позволит сохранить последовательность типов данных, обеспечивая корректность работы кода.

Полезные материалы

  1. List Comprehensions в Python: наглядное объяснение
  2. Встроенные функции — Python 3.12.2 документация
  3. Вглубь вложенных списковых включений в Python — /var/
  4. Как конвертировать списки в строки – учебник от DigitalOcean
  5. Выразительность лямбда-выражений в Python: объяснение с примерами – Afternerd
  6. Встроенные функции — Python 3.12.2 документация
  7. Использование F-строк в Python для интерполяции и форматирования строк – Real Python