В Python есть несколько полезных встроенных функций, которые позволяют преобразовать данные из одного типа в другой.
int()
int()
- преобразует строку в int:
In [1]: int("10") Out[1]: 10
С помощью функции int можно преобразовать и число в двоичной записи в десятичную (двоичная запись должна быть в виде строки)
In [2]: int("11111111", 2) Out[2]: 255
bin()
Преобразовать десятичное число в двоичный формат можно с помощью bin()
:
In [3]: bin(10) Out[3]: '0b1010' In [4]: bin(255) Out[4]: '0b11111111'
hex()
Аналогичная функция есть и для преобразования в шестнадцатеричный формат:
In [5]: hex(10) Out[5]: '0xa' In [6]: hex(255) Out[6]: '0xff'
list()
Функция list()
преобразует аргумент в список:
In [7]: list("string") Out[7]: ['s', 't', 'r', 'i', 'n', 'g'] In [8]: list({1,2,3}) Out[8]: [1, 2, 3] In [9]: list((1,2,3,4)) Out[9]: [1, 2, 3, 4]
set()
Функция set()
преобразует аргумент в множество:
In [10]: set([1,2,3,3,4,4,4,4]) Out[10]: {1, 2, 3, 4} In [11]: set((1,2,3,3,4,4,4,4)) Out[11]: {1, 2, 3, 4} In [12]: set("string string") Out[12]: {' ', 'g', 'i', 'n', 'r', 's', 't'}
Эта функция очень полезна, когда нужно получить уникальные элементы в последовательности.
tuple()
Функция tuple()
преобразует аргумент в кортеж:
In [13]: tuple([1,2,3,4]) Out[13]: (1, 2, 3, 4) In [14]: tuple({1,2,3,4}) Out[14]: (1, 2, 3, 4) In [15]: tuple("string") Out[15]: ('s', 't', 'r', 'i', 'n', 'g')
Это может пригодиться в том случае, если нужно получить неизменяемый объект.
str()
Функция str()
преобразует аргумент в строку:
In [16]: str(10) Out[16]: '10'
Например, она пригодится в ситуации, когда есть список VLANов, который надо преобразовать в одну строку, где номера перечислены через запятую.
Если сделать join
для списка чисел, возникнет ошибка:
In [17]: vlans = [10, 20, 30, 40] In [18]: ','.join(vlans) ------------------------------------------------------ TypeError Traceback (most recent call last) <ipython-input-39-d705aed3f1b3> in <module>() ----> 1 ','.join(vlans) TypeError: sequence item 0: expected string, int found
Чтобы исправить это, нужно преобразовать числа в строки. Это удобно делать с помощью list comprehensions:
In [19]: ','.join([ str(vlan) for vlan in vlans ]) Out[19]: '10,20,30,40'