Перейти к содержимому

Как преобразовать список строк в список чисел python

  • автор:

Преобразование числа из строки в тип int и float

Python не позволит сложить строку и число, даже если строка выглядит как число, то есть содержит только цифры:

>>> '50' + 1 # TypeError: cannot concatenate ‘str’ and ‘int’ objects 

В архитектуре языка оператор ‘+’ может означать как операцию сложения, так и операцию конкатенации, вследствие чего выбор типа преобразования становится неочевидным. Поэтому интерпретатор воспринимает такую инструкцию как ошибочную. В этом случае нужно использовать инструменты преобразования, чтобы можно было интерпретировать строку как число или наоборот.

Преобразование строковой версии числа в int или float .

  • Преобразование строки в тип int ;
  • Преобразование строки в тип float ;
  • Преобразование списка строк в список чисел.

Преобразование строки в тип int .

# преобразование строки в число >>> num = '50' >>> if num.isdigit(): . int('50') # 50 >>> float('1.5') # 1.5 # преобразование числа в строку >>> str(50) # '50' 

Функции int и float преобразует строку в число, функция str преобразует число в строковое представление. В Python нельзя смешивать строковые и числовые типы в таких операторах, как ‘+’ , но можно вручную выполнить необходимые преобразования перед выполнением.

Преобразование строки в тип float .

>>> x = '50' >>> y = 1 >>> z = '1.5' # Операция сложения >>> int(x) + y + float(z) # 52.5 # Операция конкатенации >>> x + str(y) + z # '5011.5' # Преобразование строки с записью вещественного # числа в число с плавающей точкой >>> text = '5.79E-10' >>> float(text) # 5.79e-10 

Преобразование списка строк в список чисел.

Для преобразования списка строк с числами в список целых чисел можно ввести проверку перед преобразованием на то, что строка состоит только из десятичных чисел str.isdigit() .

>>> str_list = ['8.3', '11', 'девять', '1', '5', '3', '9', . 'пять', '15', '13', '7', '13.9', 'число'] >>> num_list = [] >>> for i in str_list: . if i.isdigit(): . num_list.append(int(i)) >>> num_list.sort() >>> num_list # [1, 3, 5, 7, 9, 11, 13, 15] 

Для преобразования списка строк с числами включая десятичные c разделением их по типам, необходимо перед преобразованием в тип float проверять строку на вхождение точки ‘.’ .

>>> str_list = ['8.3', '11', 'девять.', '1', '5', '3', '9', . '.пять', '15', '13', '7', '13.9', 'число'] >>> def str_to_num(str): . if '.' in str and str.replace('.', '').isdigit(): . return float(str) . elif str.isdigit(): . return int(str) . >>> num_list = [] >>> for i in str_list: . n = str_to_num(i) . if n is not None: . num_list.append(str_to_num(i)) >>> num_list # [8.3, 11, 1, 5, 3, 9, 15, 13, 7, 13.9] 

Для преобразования всех чисел в тип float , можно просто заменять точку в строке с числом и проверять получившуюся строку на десятичное число.

>>> str_list = ['8.3', '11', 'девять.', '1', '5', '3', '9', . '.пять', '15', '13', '7', '13.9', 'число'] >>> def is_num(str): . if str.replace('.', '').isdigit(): . return True . >>> num_list = [] >>> for i in str_list: . if is_num(i): . num_list.append(float(i)) . >>> num_list.sort() >>> num_list # [1.0, 3.0, 5.0, 7.0, 8.3, 9.0, 11.0, 13.0, 13.9, 15.0] 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Преобразование строки в число
  • Строку в список, кортеж или множество символов
  • Одинарные, двойные и тройные кавычки в строке Python
  • Вывод специальных символов в строке Python «как есть»
  • Объединение и повторение строк
  • Индексирование строк
  • Использование срезов строк
  • Cрез строки Python от заданного символа/знака до конца строки
  • Создание макета для печати базовыми методами строк
  • Способы форматирования текстовых строк
  • Подсчет повторений слов в тексте, деление строки на список слов
  • Удаление слова из строки Python по фрагменту или шаблону
  • Удаление пунктуации из строки
  • Деление строки по заглавным буквам
  • Создание отчетов и писем по шаблонам

3 варианта, как сконвертировать список(list) в строку в Python 3

Это метод строк — он берет список и соединяет элементы списка в строку.

1. Если у вас список строк, можно просто использовать join.

my_list = ["Pythonist.ru", "-", "хороший", "сайт", "по","Python"] print(" ".join(my_list)) >>>Pythonist.ru - хороший сайт по Python

2. Если это список чисел, вы можете использовать map() для приведения всех элементов списка к строке, а потом просто склеить их в одну строку методом join()

my_list2 = [66, 77, 88, 99] print(" ".join(map(str, my_list2))) >>> 66 77 88 99

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

my_list3 = [11, 22, 33, 44, 55] print(str(my_list3).strip('[]')) >>> 11, 22, 33, 44, 55

Больше 50 задач по Python c решением и дискуссией между подписчиками можно посмотреть тут

Осваиваем Python: преобразование строки в число на конкретных примерах

Иногда требуется преобразовать строку в целое число или в число с плавающей точкой для осуществления определённых операций в Python.

Если вы попробуете выполнить то или иное действие со строкой в виде чисел, то получите ошибку.

Этот код приведёт к ошибке :

str_a = ’50’ b = 10 c = str_a + b print (c)

В Python можно использовать функции int и float для преобразования строки в целое число или число с плавающей точкой до осуществления каких-либо операций.

Обновлено: 2023-05-31 19:18:07 Сергей Бензенко автор материала

Использование функции int() для преобразования строки в целое число

Рассмотрим следующий код:

str_a = '50' b = 10 c = int(str_a) + b print ("The value of c header-42948-2">Преобразование десятичной строки в число с плавающей точкой

Можно использовать класс float для того чтобы осуществить преобразование строки в число с плавающей точкой.

Пример использования float для преобразования строки:

#Пример преобразования string во float str_a = '50.85' b = 10.33 c = float(str_a) + b print ("The value of c 1" data-ab-test="post_related" data-ab-key="yarpp">
Модуль re Python – осваиваем регулярные выражения Python

Замечание: если вы попытаетесь использовать здесь функцию int(), то получите ошибку.

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

Если нужно преобразовать строки из чисел, содержащиеся в списке, тогда используйте генератора списков.

Будет создан новый список, в котором можно применить функцию int в каждой итерации.

Код:

#Пример преобразования string в int в списке str_lst = ['1', '2', '3'] int_lst = [int(x) for x in str_lst] print (int_lst)

Будет выведен новый список, состоящий из целых чисел, полученных из строк.

Преобразование списка строк в список чисел с плавающей точкой

Аналогичным образом можно использовать float вместо int для преобразования списка, содержащего строки из целых чисел. Рассмотрим пример:

Код для преобразования элементов списка в числа с плавающей точкой:

#Пример преобразования string во float в списке str_lst = ['10.505', '2.3', '3.99'] float_lst = [float(x) for x in str_lst] print (float_lst)

Пример преобразования строки с запятыми в число

Ну а как насчёт строки наподобие “5,000,000”? Если попытаетесь преобразовать ее, используя функции int() или float() , то получите ошибку.

Решением будет использование import locale . Например:

locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’ )

Но это может вызвать проблемы в остальных локалях. Другое решение заключается в том, чтобы заменить запятые пустыми строками, то есть“”, а затем использовать функцию int.

str_a = '5,123,000' int_b = int(str_a.replace(',','')) print ("The integer value",int_b)

В результате получаем целое значение. Это же решение можно применить для конвертации строки в число с плавающей точкой.

Преобразование строки в число для расчёта високосного года -пример

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

Для этого введённое значение сначала преобразуется в целое число, а затем используется формула расчёта високосного года.

#Пример расчёта високосного года try: Y = int(input("Enter a Year? ")) exceptValueError: print ("You may only enter digits in '2000' format!") else: leap_or_not = Y%4 == 0 ifleap_or_not: print ("Leap year") else: print ("Not a leap year")

Вводимая строка сразу преобразуется в целое число, а затем используется для расчёта.

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

Для преобразования целых чисел в строки в Python можно использовать функцию str() . Функция str() принимает объект, который может быть типа int , float , double и т.п.

Рассмотрим пример преобразования переменной типа int в строку, которая затем используется как строка для конкатенации:

#Примерпреобразованияint в string a_string = "str function for int to string" a_num = 456 print (a_string + str(a_num))
str function for int to string456

Если бы целочисленная переменная была использована без функции str(), возникла бы ошибка TypeError.

Сергей Бензенко автор-переводчик статьи « 5 examples to Convert a Python string to int and float »

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

Самый питонический способ преобразовать список чисел с плавающей запятой fs в список целых чисел – использовать однострочный код fs = [int (x) for x in fs]. Он перебирает все элементы в списке fs, используя понимание списка, и преобразует каждый элемент списка x в целочисленное значение с помощью конструктора int (x).

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

Проблема: Дан список чисел с плавающей запятой [1.0, 2.0, 3.0] . Как его преобразовать в список целых чисел [1, 2, 3] ?

Способы неприменимы к спискам списков. При необходимости можно добавить циклы или определить пользовательские функции.

Метод 1: Список

Предположим у нас есть список:

a = [1.1, 1.2, 1.8, 0.5, 5.9, -2.3]

Проверим тип элементов списка:

print(type(a[0])) #

Применим встроенную функцию int, получим список состоящий из целых чисел:

print([int(a) for a in a]) # [1, 1, 1, 0, 5, -2]

Проверим тип элементов списка:

A = [int(a) for a in a] print(type(A[0])) #

Таким образом, используя встроенную функцию int, которая, преобразуя вещественное число, делает округление в сторону нуля, а вернее будет сказать – отбрасывает дробную часть, мы можем однострочным кодом получить новый список целых чисел.

Метод 2: Функция Map

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

Применим к тому же списку ‘a’ код ниже:

print(list(map(int, a))) # [1, 1, 1, 0, 5, -2]

Проверять тип элементов полученного списка мы не будем, так как при вызове функции ‘map’ передали в нее уже описанную в методе 1 функцию ‘int’ в качестве аргумента, а результат обернули в список применением функции ‘list’.

Метод 3: Функция Round в определении Списка

Он очень схож с первым, но в отличие от ‘int’, он не просто отбрасывает дробную часть, а округляет до ближайшего четного целого числа, если дробная часть равна 0,5. Также можно передать в качестве второго аргумента количество знаков после запятой, до которых необходимо округление, по умолчанию это 0, этим мы и воспользуемся:

print([round(a) for a in a])

Проверим тип чисел нового списка:

D = [round(a) for a in a] print(type(D[0])) #

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

Метод 4: Модуль Math

В этом способе я предлагаю воспользоваться импортируемым модулем ‘math’, в котором будем использовать три функции ceil() , floor() , и trunc() . Рассмотрим подробнее каждый. Синтаксис у них одинаковый, различие в способе округления.

Применим к изначальному списку:

a = [1.1, 1.2, 1.8, 0.5, 5.9, -2.3] print([math.ceil(a) for a in a]) # [2, 2, 2, 1, 6, -2]

‘Ceil’ округляет к ближайшему большему целому числу с учетом знака(-2.3 < -2 вывод будет True)

Проверим тип чисел в полученном списке:

C = [math.ceil(a) for a in a] print(type(C[0])) #

Рассмотрим следующую функцию в модуле ‘math’ – ‘floor’, её действие противоположно ‘ceil’ – округляет в меньшую сторону к ближайшему целому числу:

print([math.floor(a) for a in a]) # [1, 1, 1, 0, 5, -3]

F = [math.floor(a) for a in a] print(type(F[0])) #

Следующая функция – ‘trunc’, является аналогом встроенной функции ‘int’ – просто отбрасывает дробную часть какая она бы не была:

print([math.trunc(a) for a in a]) # [1, 1, 1, 0, 5, -2]

И снова проверим тип чисел нового списка:

T = [math.trunc(a) for a in a] print(type(T[0])) #

Метод 5: NumPy

Здесь рассмотрим преобразование списка из ‘int’ в массив c помощью модуля NumPy. Отличие массива от списка – все элементы массива должны быть одного типа, как “float’ и ‘int’. Числовые операции с большим объемом данных можно проводить с массивами гораздо быстрее и эффективнее чем со списками.

Превратим наш первый список ‘a’ в массив:

import numpy as np N = np.array(a, int)

В функцию array мы передаем два аргумента, имя списка для конвертации в массив и тип для каждого элемента.

# [ 1 1 1 0 5 -2]

Проверим тип элементов:

print(type(N[0])) #

В отличие от типа чисел ‘int’ в Python в модуле NumPy они определены несколько иначе и разделены на несколько подгрупп. Например, ‘int32’ – это целые числа в диапазоне от -2147483648 до 2147483647(4-байтовые числа), ‘int64’ – числа от -9223372036854775808 до 9223372036854775807(8-байтовые числа), также есть различные типы ‘int’ для 32- и 64-битных операционных систем, это обязательно надо учитывать при вычислениях с массивами.

Categories Python

Be on the Right Side of Change ��

  • The world is changing exponentially. Disruptive technologies such as AI, crypto, and automation eliminate entire industries. ��
  • Do you feel uncertain and afraid of being replaced by machines, leaving you without money, purpose, or value? Fear not! There a way to not merely survive but thrive in this new world!
  • Finxter is here to help you stay ahead of the curve, so you can keep winning as paradigms shift.

Learning Resources ��‍��

⭐ Boost your skills. Join our free email academy with daily emails teaching exponential with 1000+ tutorials on AI, data science, Python, freelancing, and Blockchain development!

Check out our free WhatsApp channel to stay educated on LLM developments:

Join the Finxter Academy and unlock access to premium courses �� to certify your skills in exponential technologies and programming.

New Finxter Tutorials:

  • What is the Fastest Way to Get a Sorted Unique List in Python?
  • Top 10 Cutting-Edge AI Applications and 30 Startups Disrupting Education
  • Top 50 Cutting-Edge Artificial Intelligence (AI) Applications in Business
  • OpenAI GPT Store – Get Your GPTs Ready in 5 Simple Steps
  • Top 10 Cutting-Edge Artificial Intelligence (AI) Applications in Healthcare
  • Top 50 Cutting-Edge Artificial Intelligence (AI) Applications in Manufacturing
  • What’s Not Going to Change in 10 Years? (Jeff Bezos)
  • Top 41 Cutting-Edge Artificial Intelligence (AI) Applications in Finance
  • Top 26 Cutting-Edge Artificial Intelligence (AI) Applications in Banking
  • How to Invest in OpenAI? 5 Alternative Vehicles

Finxter Categories:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *