Как преобразовать список строк в список целых чисел в Python?

Вы можете преобразовать список строк в список целых чисел в Python с помощью цикла for, который проходит по каждому элементу в списке строк, преобразует его в int и добавляет в новый список. Более лаконичная альтернатива — использовать list comprehension. Третий вариант — использовать функцию map() для преобразования каждой строки в списке в int, а затем передать вывод функции map() в функцию list().

Давайте посмотрим, как эти различные реализации работают на практике!

Преобразование списка строк в список целых чисел с помощью цикла For

Начнем с самого очевидного подхода, который использует цикл for для прохода по каждому элементу списка строк, преобразует его в целое число, а затем добавляет это число в пустой список.

При использовании этого подхода вы создаете новый пустой список вне цикла for. Этот пустой список будет нашим окончательным списком целых чисел.

list_of_strings = ['1', '5', '7', '45', '67']
list_of_ints = []

for item in list_of_strings:
    list_of_ints.append(int(item))

print(list_of_ints)

Переменная list_of_strings является списком, поскольку она начинается и заканчивается квадратными скобками. Это список строк, поскольку каждый элемент в списке является строкой (он заключен в одинарные кавычки).

В первой строке кода мы создаем список строк. Во второй строке кода мы создаем пустой список, который будет нашим окончательным списком целых чисел.

Затем мы пишем цикл for, который проходит по каждому элементу списка строк и преобразует каждый из них в целое число, используя встроенную функцию Python int().

После преобразования каждой строки в списке в целое число мы добавляем целое число к списку list_of_ints, используя метод append().

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

[1, 5, 7, 45, 67]

Давайте рассмотрим второй способ преобразования списков строк в целые числа в Python.

Преобразование списка строк в список целых чисел с помощью Python List Comprehension

Другой способ преобразования списков строк в списки целых чисел в Python — использование list comprehension. Вы увидите, что с помощью этого подхода вы можете сократить длину нашего кода Python до одной строки.

Первые два отличия этого подхода от предыдущего заключаются в том, что вам не нужно создавать новый пустой список и не нужен цикл for.

list_of_strings = ['1', '5', '7', '45', '67']
list_of_ints = [int(item) for item in list_of_strings]
print(list_of_ints)

Внутренняя логика списочного генератора заменяет логику, ранее реализованную с использованием цикла for.

Если вы только начинаете работать с Python, вам может потребоваться некоторое время, чтобы разобраться в синтаксисе списочного понимания. Не волнуйтесь, это очень распространенная проблема, с которой сталкиваются многие разработчики Python.

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

[1, 5, 7, 45, 67]

Перейдем к третьему подходу.

Преобразование списка строк в целые числа с использованием функций Map() и List()

Этот подход сложнее предыдущих, поэтому я бы не стал обязательно использовать его в реальном сценарии. В то же время, это способ изучить все доступные вам возможности Python.

Прежде всего, мы используем функцию map() для преобразования каждой строки в списке в целое число.

map(int, list_of_strings)

Как вы можете видеть, функция map() принимает другую функцию в качестве первого аргумента. В этом примере функция, которую мы передаем в функцию map() в качестве первого аргумента, — это функция int(). Эта функция применяется к каждому элементу в списке (или итерируемом), переданном в качестве второго аргумента в map().

Давайте распечатаем вывод функции map() и посмотрим, что мы получим:

print(map(int, list_of_strings))

[output]
<map object at 0x1050c74c0>

Функция map() возвращает объект map().

Итак, как мы можем получить список целых чисел?

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

list_of_strings = ['1', '5', '7', '45', '67']
list_of_ints = list(map(int, list_of_strings))
print(list_of_ints)

Вывод правильный:

[1, 5, 7, 45, 67]

Использование цикла While для преобразования списка строк в список целых чисел

У нас есть еще один способ преобразовать список строк в целые числа в Python!

Вы можете использовать цикл while. Принцип аналогичен циклу for. Мы используем цикл while для:

  • Просмотрите каждый элемент в списке строк.
  • Преобразуйте этот элемент в целое число.
  • Используйте метод list append(), чтобы добавить целое число в конец нового списка целых чисел, который мы создаем вне цикла while.

Вот код Python для этого подхода:

list_of_strings = ['1', '5', '7', '45', '67']
list_of_ints = []

index = 0

while index < len(list_of_strings):
    list_of_ints.append(int(list_of_strings[index]))
    index += 1

print(list_of_ints)

Основное отличие от подхода с использованием цикла for заключается в том, что мы создаем переменную index вне цикла while.

Вы устанавливаете начальное значение переменной index равным нулю, а затем увеличиваете ее значение на единицу на каждой итерации цикла while. Когда значение индекса становится равным 5, условие цикла while становится ложным, и это прекращает выполнение цикла while.

Условие цикла while становится ложным, поскольку длина list_of_strings равна 5:

list_of_strings = ['1', '5', '7', '45', '67']
print(len(list_of_strings))

[output]
5

Результат кода, использующего цикл while, также верный:

[1, 5, 7, 45, 67]

Заключение

В этом уроке по Python мы рассмотрели несколько способов преобразования списка строк в целые числа в Python.

Как мы видели, вы можете использовать цикл for или цикл while для явного перебора списка строк. Альтернативой этим подходам являются списочные включения или функция map().

Молодец, что улучшил свои навыки работы с Python!