Как преобразовать строку в выражение python
Перейти к содержимому

Как преобразовать строку в выражение python

  • автор:

Вычисление значения математического выражения из строки

С точки зрения безопасности (как уже сказал @Batanichek — с eval() нужно быть очень осторожным), производительности и гибкости лучше воспользоваться numexpr:

In [6]: import numexpr as ne In [7]: ne.evaluate('1/3+2/3') Out[7]: array(1.0) In [8]: var1=10 In [9]: var2=2 In [10]: ne.evaluate('var1**var2') Out[10]: array(100, dtype=int32) 

Он, кстати, быстрее для более сложных вычислений, поддерживает использование переменных, поддерживает NumPy, SciPy и т.д.

Numexpr поддерживает многопоточные вычисления (используя все доступные ядра процессора) и VML от Intel (Vector Math Library, который интегрирован в интеловский же Math Kernel Library (MKL)) .

Пример работы с обычным («Vanilla Python») массивом:

In [45]: lst = [1, 2.718281828] In [46]: ne.evaluate('log(lst)') Out[46]: array([ 0., 1.]) 

с NumPy массивом:

In [50]: a = np.array([1, 2.718281828]) In [51]: ne.evaluate('log(a)') Out[51]: array([ 0., 1.]) 

Сравнение производительности с NumPy для массива, состоящего из 1го млн. элементов типа numpy.float64 :

In [36]: a = np.random.rand(10**6) In [37]: a.shape Out[37]: (1000000,) In [38]: len(a) Out[38]: 1000000 In [39]: %timeit np.log(a) 10 loops, best of 3: 24.3 ms per loop In [40]: %timeit ne.evaluate('log(a)') 100 loops, best of 3: 5.45 ms per loop In [41]: %timeit np.sqrt(np.sin(a)**2 + np.cos(a)**2) 10 loops, best of 3: 84.5 ms per loop In [42]: %timeit ne.evaluate('sqrt(sin(a)**2 + cos(a)**2)') 100 loops, best of 3: 6.32 ms per loop 

Как преобразовать строку в множество python

Привести строку к множеству в пайтоне очень просто. Нужно воспользоваться конструктором set() — он превратит в множество любой объект, поддерживающий итерацию, и строки, в том числе.

s = 'foobaz' # обратите внимание, что в множестве не сохраняется начальный порядок set(s) # 

Осваиваем 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 »

Вычисление значения из выражения в виде строки

Author24 — интернет-сервис помощи студентам

Здравствуйте, есть строка, в которой хранится какое-то выражение, например, 6+3. Задача найти значение этого выражения.
Проблема в том, что выражение хранится в виде строки.. Конечно, можно искать в строке какой-нибудь математический символ, потом обрезать строку до него и после и находить решение, но, может, есть ли легкий способ найти значение?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Вычисление значения выражения заданного в виде строки
Помогите с программой, нужно:Дона строка которая содержит натуральные числа, знаки четырех.

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

Вычисление значения логического выражения, заданного в виде строки
Нужно преобразовать строку в логическое выражение. Можно ли это сделать? Вот например это обычная.

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

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

20 / 20 / 17
Регистрация: 12.12.2015
Сообщений: 71

знаю лёгкий, но довольно опасный способ. Функция eval() принимает строку и выполняет её как программный код, то есть, если написать:

eval('6+3')

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

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