Книга: PyNEng
Назад: Множество (Set)
Дальше: Проверка типов

Преобразование типов

Преобразование типов

В 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' 
Назад: Множество (Set)
Дальше: Проверка типов