ПРЕОБРАЗОВАНИЕ ТИПОВ ДАННЫХ В PYTHON
С помощью функции complex() удобно формировать комплексные числа, указывая через запятую два аргумента: действительную часть и мнимую часть.
a = complex(3.2, 1.5) print(a)
(3.2+1.5j)
Смешанная арифметика
Python поддерживает смешанную арифметику в выражениях, состоящих из чисел разных типов. При этом целочисленный тип (int) при необходимости расширяется до дробного (float), а дробный — до комплексного (complex). То же самое происходит при сравнении чисел разного типа.
Системы счисления
Для преобразования чисел в двоичную, восьмиричную и шестнадцатиричную систему служат функции bin(), oct() и hex(). Эти функции возвращают строковые представления чисел, что необходимо учитывать при работе с ними.
a = hex(38) print(a)
0x26
Преобразовать строковое представление недесятичного числа в десятичную систему можно с помощью функции int(), указав вторым аргументом основание системы счисления (от 2 до 36 включительно).
a = '0x26' b = int(a, base=16) print(b)
Округление
Для округления чисел с плавающей точкой используется функция round(). Функция использует банковское округление (по Гауссу) до ближайшего чётного целого, чтобы избежать серийного накопления погрешности. Например, round(1.5) + round(2.5) будет равен 4. При обычном математическом округлении сумма округленных чисел будет равна 5.
С помощью второго аргумента функции round() можно округлить число до заданного количества знаков после запятой. Если воторой аргумент не задан, то число округляется до целого.
a = round(1.5) print(a) b = round(2.5) print(b) c = round(6.4567, 2) print(c) d = round(4.35, 1) print(d) e = round(4.45, 1) print(e)
2 2 6.46 4.7 4.5
Преобразование в строку
Для преобразования в строку используется функция str(). Аргументом функции str() может выступать число, строка, кортеж, список, множество, словарь, логическое значение, None.
Любой объект, преобразованный в строку, становится просто набором символов.
a = 5.3 x = str(a) print(x, type(a), type(x))
Преобразование в список
Для преобразования в список используется функция list(). Аргументом функции list() может выступать любой итерируемый тип данных (строка, кортеж, список, множество, словарь).
При преобразовании строки в список, мы получаем список, состоящий из символов строки.
Стоит обратить внимание на то, что при преобразовании словаря в список, в списке оказываются только ключи.
b = 'Python' x = list(b) print(x) c = (3, 4) x = list(c) print(x) d = [5, 6] x = list(d) print(x) e = x = list(e) print(x) f = x = list(f) print(x)
['P', 'y', 't', 'h', 'o', 'n'] [3, 4] [5, 6] [8, 7] [1, 2]
Преобразование в кортеж
Для преобразования в кортеж используется функция tuple(). Аргументом функции tuple() может выступать любой итерируемый тип данных (строка, кортеж, список, множество, словарь).
Преобразование в кортеж происходит по тому же принципу, по которому происходит преобразование в список.
Преобразование в множество
Для преобразования в множество используется функция set(). Аргументом функции set() может выступать любой итерируемый тип данных (строка, кортеж, список, множество, словарь).
Преобразование в множество происходит по тому же принципу, по которому происходит преобразование в список, но следует учитывать, что повторяющиеся элементы в множестве будут представлены только один раз.
a = [5, 6, 5, 6, 7] x = set(a) print(x)
С помощью последовательного преобразования числа в строку, а затем в множество, можно найти набор символов, которые встречаются в числе.
a = 227 x = set(str(a)) print(x)
Преобразование в словарь
Для преобразования в словарь используется функция dict().
Для преобразования в словарь каждый элемент преобразуемой последовательности должен быть парой. Первым элементом в паре может быть любой неизменяемый тип данных (число, строка, кортеж), а вторым — любой тип данных.
f = [[1, 'яблоко'], [2, 'тыква']] x = dict(f) print(x)
Преобразование в логический тип
Для преобразования в логический тип используется функция bool().
Функция bool() вернет False, если в качестве аргумента выступает пустая строка, нулевое число, None, пустой список, пустой кортеж или пустое множество. Непустая строка, ненулевое число, даже если оно отрицательное, вернут True. Непустое множество, непустой список или непустой кортеж, даже если они содержат один пустой элемент, вернут True.
a = -7 x = bool(a) print(x) b = '' x = bool(b) print(x) c = x = bool(c) print(x)
True False True
Как подставить переменную в строку
В Python есть шесть способов подставить переменную в строку. Не все из них социально приемлемые. Если коротко, то преподаватель точно не завернёт работу, использующую .format :
person1 = 'Александра' person2 = 'Александр' message_template = """Здравствуйте, ! На связи . . С уважением, """ message = message_template.format(recipient=person1, sender=person2) print(message)
Как не надо
.format cо строковыми литералами
Выносить в параметры .format нужно только изменяющиеся данные. Не стоит писать
message_template = " " message = message_template.format( greeting='Здравствуйте', comma=',', recipient='Александра', exclamation_point='!' ) print(message)
Параметры comma и exclamation_point всегда будут равны запятой и восклицательному знаку. Их надо делать частью шаблона:
message_template = ", !" message = message_template.format( greeting='Здравствуйте', recipient='Александра', ) print(message)
Если заранее известно, что и приветствовать мы всегда будем словом “Здравствуйте”, оно тоже станет частью шаблона:
message_template = "Здравствуйте, !" message = message_template.format(recipient='Александра') print(message)
Сложение
Как было упомянуто в статье про арифметические операции над строками, их лучше избегать:
person1 = 'Александра' person2 = 'Александр' message = """Здравствуйте, """ + person1 + """! На связи """ + person2 + """. . С уважением, """ + person2 print(message)
Такие строки трудно читать и изменять.
replace
person1 = 'Александра' person2 = 'Александр' message_template = """Здравствуйте, ! На связи . . С уважением, """ message = message_template.replace('', person1) message = message.replace('', person2) print(message)
В сущности аналогичен .format , но менять количество и название переменных уже труднее. А ещё .format умеет, например, выравнивать строки, а replace так не может.
Как ещё можно
В моменты, когда нужно форматирование строки в стиле printf (функции из популярного системного языка C), используют оператор %.
Начиная с версии 3.6 в Python появились f-строки — более удобная замена .format .
С особо редких случаях прибегают к Template Strings.
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Как преобразовать строку в имя переменной в python?
Здравствуйте. Проблема такая. Есть переменные para1, para2, para3 и так до 10. Эти переменные определены в начале файла. И им присвоено значение.
Нужно эти переменные засунуть в список paragraphs = [] ,при помощи paragraphs.append(para1)
переменным присвоены значения в начале кода.
para1 = ‘Это первый параграф’
para2 = ‘Это второй параграф’
x = 1
userInputs = 10 // это сколько этих переменных должно быть
while x var = «para» + str(x)
paragraphs.append(var)
x = x+1
Но проблема в том, что .append в список засовывает строку. А мне надо, чтобы он туда засунул имя переменных!
Потому что, потом
for p in paragraphs:
print(p)
он мне пишет
«para1»
«para2» и так далее
А надо, чтобы писал:
«Это первый параграф»
«Это второй параграф»
То есть значения переменных, которые определены в начале файла.
- Вопрос задан более трёх лет назад
- 9264 просмотра
Преобразовать имя(название) переменной в строку(str)
Есть список с переменными. Например, одна из них называется model_xgb , при применении обертки str , получаю это:
LGBMRegressor(bagging_fraction=0.8. . subsample_for_bin=200000″, subsample_freq=0)
Мне нужно, чтобы ее имя — model_xgb , а не содержание, преобразовать в строку. Как это сделать?
Отслеживать
47.8k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 30 окт 2020 в 6:20
Sergey Svetloff Sergey Svetloff
1 3 3 бронзовых знака
Так вы и так знаете название переменной в коде, в чём проблема? Без контекста непонятно.
30 окт 2020 в 7:09
имя=название переменной мне нужно использовать дальше для вывода. То есть в выводе на печать, например.
1 ноя 2020 в 17:24
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
# функция перевода имени переменной в строку def var2str(var, vars_data = locals()): return [var_name for var_name in vars_data if id(var) == id(vars_data[var_name])] # проверка работы функции на локальных переменных def test(): your_variable = "test" for index in range(1): print(var2str(index, locals())) # проверка работы функции на глобальных переменных my_variabe = 1 test() print(var2str(my_variabe))
если нужны только глобальные:
def var2str(variable): return [global_var for global_var in globals() if id(variable) == id(globals()[global_var])] my_variabe = 1 your_variable = "test" print(var2str(my_variabe))
import varname my_variabe = 1 your_variable = "test" print(varname.nameof(my_variabe))
но у меня не установлен модуль varname , чтобы проверить код 🙁
