ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

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

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
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