Преобразование списка строк в список чисел в Python
Быстрый ответ
Преобразовать все элементы списка в целые числа можно с помощью генератора списка:
nums = ['1', '2', '3']
ints = [int(x) for x in nums]
Такая однострочная конструкция эффективно преобразует строковые значения списка nums в список целых чисел ints.

Преобразование списков: не только привычные методы
Эффективное использование памяти с генераторами
В случае работы с большими списками удобно использовать генераторное выражение, тем самым экономя память:
nums = ['1', '2', '3']
ints_gen = (int(x) for x in nums)
ints = list(ints_gen)
Генератор выдает значения по одному, что наиболее эффективно с точки зрения использования памяти, особенно при работе с большим объемом данных.
Магия функции map и распаковки
Комбинация функции map() и операции распаковки предоставляет альтернативный способ преобразования:
nums = ['1', '2', '3']
ints = [*map(int, nums)]
Оператор *, примененный к функции map, позволяет "распаковать" преобразованные элементы непосредственно в список.
Генераторы списков против map: сравнение
Генераторы списков и функция map() обладают сопоставимой производительностью. Однако map() может выглядеть более компактно, а генераторы списков — более понятно. Выбор зависит от требований к читаемости и удобству кода.
Усложненные случаи и решения
Обработка списков с элементами разных типов
Списки, содержащие элементы различных типов, требуют особого подхода:
mixed = ['1', 2, '3']
ints = [int(x) for x in mixed if isinstance(x, str)]
Этот подход позволяет применять int() только к строкам, избегая ошибок TypeError.
Защита от ошибок преобразования
Если список содержит элементы, которые невозможно преобразовать в int, проблему можно обойти следующим образом:
nums = ['a', '2', '3']
def safe_int_convert(x):
try:
return int(x)
except ValueError:
return None
ints = [safe_int_convert(x) for x in nums]
Такой метод обеспечивает безопасное преобразование, заменяя неконвертируемые элементы на None.
Функциональный подход с map
Та же стратегия безопасного преобразования может быть реализована с использованием функции map():
nums = ['a', '2', '3']
ints = list(map(safe_int_convert, nums))
Этот подход позволяет безопасно применить заданную функцию к каждому элементу списка.
Визуализация
Визуально процесс преобразования элементов списка в целые числа можно представить так:
Исходный список: [🔢 '3', '4', '5']
Операция: int()
Преобразованный список: [🔢 3️⃣, 4️⃣, 5️⃣]
Рассматривайте int() как уникальный инструмент, который превращает числовые значения, заключенные в строки, в числа, готовые к математическим операциям. 🧮
Характерные особенности версий Python
Особенности Python 2.x при использовании map
В Python 2.x функция map() возвращает список автоматически:
nums = ['1', '2', '3']
ints = map(int, nums) # В Python 2.x результат уже является списком
Преобразование в список или распаковка не требуются, так как функция map() сразу возвращает готовый список.
Полезные материалы
- Built-in Functions — Python 3.12.2 documentation — страница официальной документации Python, посвящённая функции
int(). - When to Use a List Comprehension in Python – Real Python — статья о подробном изучении генераторов списков.
- Python's map(): Processing Iterables Without a Loop – Real Python — обзор возможностей функции
map(). - Built-in Types — Python 3.12.2 documentation — информация о числовых типах в Python, включая
int. - Python int() Function — простые примеры и объяснения функции
int()от W3Schools. - Python int() (With Examples) — руководство Programiz по использованию
int()в различных ситуациях. - Type Conversion in Python – GeeksforGeeks — все об изменении типов в Python, включая использование функции
int().


