
В Python часто возникает задача перевести строку чисел, полученную из файла, формы ввода или API, в массив для дальнейших вычислений. Например, строка «12, 7, 9, 45» не может быть напрямую использована в арифметических операциях, пока каждый элемент не станет числом.
Самый простой способ обработки – разбить строку на элементы с помощью split(), указав разделитель, и затем преобразовать каждый элемент через int() или float(). Для больших объёмов данных удобнее использовать map(), чтобы применить преобразование к каждому элементу без явного цикла.
Если работа ведётся с научными вычислениями или анализом данных, строку можно сразу преобразовать в массив NumPy. Этот подход сокращает время обработки больших массивов чисел и упрощает использование встроенных функций для математических операций и статистики.
При обработке данных важно учитывать возможные некорректные значения: пустые строки, лишние пробелы или символы, не являющиеся цифрами. Их можно фильтровать с помощью списковых выражений или регулярных выражений, чтобы исключить ошибки при преобразовании в числа.
Разделение строки по пробелам и запятой

Строка чисел может содержать различные разделители, чаще всего пробелы и запятые. Для корректного преобразования в массив необходимо сначала разбить строку на отдельные элементы.
Простейший способ для строк с единообразными разделителями – использование метода split():
- По пробелу: numbers_str.split(‘ ‘) разделяет «12 7 9 45» на [«12», «7», «9», «45»]
- По запятой: numbers_str.split(‘,’) разделяет «12,7,9,45» на [«12», «7», «9», «45»]
Если строка содержит оба типа разделителей, можно воспользоваться регулярными выражениями:
- Импорт import re
- Разделение: re.split(‘[,\\s]+’, numbers_str) позволяет разделить строку «12, 7 9,45» на [«12», «7», «9», «45»]
После разделения важно удалить возможные пустые строки, которые могут появиться при нескольких подряд идущих пробелах или запятых. Для этого используется списковое выражение:
- [x for x in split_list if x] сохраняет только непустые элементы
Преобразование элементов строки в целые числа

После разделения строки на отдельные элементы необходимо преобразовать их из текста в числа. Для целых чисел используется функция int(). Например, строка «12» превращается в число 12 с помощью int(«12»).
Для списка строк можно применить обычный цикл:
numbers_list = [«12», «7», «9», «45»]
int_list = []
for x in numbers_list:
int_list.append(int(x))
Чтобы сократить код, используют списковое выражение:
int_list = [int(x) for x in numbers_list]
При работе с внешними данными рекомендуется проверять элементы перед преобразованием. Некорректные значения, например пустые строки или буквы, вызовут ошибку. Простейший вариант фильтрации:
int_list = [int(x) for x in numbers_list if x.isdigit()]
Использование функции map для конверсии типов
Функция map() позволяет применить преобразование к каждому элементу списка без явного цикла. Для конверсии строк в целые числа используется map(int, list_of_strings).
Пример для строки чисел:
numbers_str = «12, 7, 9, 45»
split_list = numbers_str.split(‘,’)
int_list = list(map(int, split_list))
Если требуется преобразовать элементы в числа с плавающей точкой, вместо int используют float:
float_list = list(map(float, split_list))
Для фильтрации или дополнительной обработки можно использовать lambda внутри map:
int_list = list(map(lambda x: int(x.strip()), split_list))
Этот подход сокращает код и делает преобразование более читаемым при работе с длинными списками.
Создание списка из числовых значений

После преобразования строк в числа их необходимо собрать в список для дальнейшей работы. В Python список создается с помощью квадратных скобок или функции list().
Если использовалось split() и int() через цикл, формируется пустой список и добавляются элементы:
numbers_list = []
for x in split_list:
numbers_list.append(int(x))
При использовании map() создание списка можно выполнить одной строкой:
numbers_list = list(map(int, split_list))
Списки позволяют выполнять арифметические операции, сортировку и фильтрацию. Например, для суммирования чисел:
total = sum(numbers_list)
Для динамического добавления элементов удобно использовать метод append(), а для объединения нескольких списков – оператор + или метод extend().
Обработка пустых и некорректных элементов

При преобразовании строки в массив чисел часто встречаются пустые строки, пробелы или символы, не являющиеся цифрами. Их необходимо исключить, чтобы избежать ошибок при конверсии с помощью int() или float().
Для проверки элементов используют методы isdigit() или регулярные выражения. Пример фильтрации:
filtered_list = [x for x in split_list if x.strip().isdigit()]
Также можно использовать try-except для безопасного преобразования:
valid_numbers = []
for x in split_list:
try:
valid_numbers.append(int(x))
except ValueError:
continue
Ниже приведена таблица с примерами обработки разных элементов:
| Элемент строки | Результат после фильтрации | Метод обработки |
|---|---|---|
| «12» | 12 | int() |
| » 7 « | 7 | strip() + int() |
| «» | Удаляется | if x.strip() |
| «abc» | Удаляется | try-except |
| «45,67» | 45, 67 (разделить по запятой) | split(‘,’) |
Преобразование строки в массив чисел с помощью NumPy

Для работы с большими объемами числовых данных удобнее использовать библиотеку NumPy. Она позволяет сразу преобразовать строку в массив чисел и выполнять быстрые вычисления.
Простейший способ:
import numpy as np
numbers_str = «12, 7, 9, 45»
split_list = [x.strip() for x in numbers_str.split(‘,’) if x.strip()]
numbers_array = np.array(split_list, dtype=int)
Если строки содержат числа с плавающей точкой, достаточно заменить dtype=int на dtype=float:
numbers_array = np.array(split_list, dtype=float)
NumPy автоматически поддерживает операции над массивами без циклов, например:
squared = numbers_array ** 2
total = numbers_array.sum()
Для строк с различными разделителями можно использовать регулярные выражения перед преобразованием в массив NumPy:
import re
split_list = re.split(‘[,\\s]+’, numbers_str)
numbers_array = np.array([int(x) for x in split_list if x])
Вопрос-ответ:
Как разделить строку с числами на отдельные элементы?
Для разделения строки используют метод split(), указав разделитель. Если числа разделены пробелами: numbers_str.split(‘ ‘), если запятыми: numbers_str.split(‘,’). Для строк с разными разделителями удобно использовать регулярные выражения через re.split(‘[,\s]+’, numbers_str), чтобы получить список отдельных элементов без пустых значений.
Как преобразовать элементы строки в целые числа?
После разделения строки на элементы каждый элемент можно преобразовать в число с помощью функции int(). Для списка строк используется циклическое добавление: int_list = [int(x) for x in split_list]. Если есть пустые или некорректные значения, их можно исключить через проверку x.isdigit() или обработку try-except, чтобы избежать ошибок при конверсии.
В чем преимущества использования функции map для конверсии чисел?
Функция map() позволяет применить преобразование к каждому элементу списка без явного цикла. Например, int_list = list(map(int, split_list)) сразу создаёт список целых чисел. Для чисел с плавающей точкой используют float, а для удаления пробелов или обработки нестандартных форматов можно использовать lambda внутри map: list(map(lambda x: int(x.strip()), split_list)).
Как преобразовать строку чисел в массив NumPy?
Сначала строку разделяют на элементы и очищают от пустых значений. Затем используют np.array() с указанием типа данных: numbers_array = np.array([int(x) for x in split_list if x], dtype=int). Для чисел с плавающей точкой заменяют dtype=int на dtype=float. NumPy позволяет выполнять арифметические операции и агрегатные функции напрямую с массивом, например numbers_array.sum() или numbers_array**2.
