Шаг 105.
Python: тонкости программирования. Общие структуры ... . Массивоподобные структуры данных. bytearray - изменяемые массивы одиночных байтов

    На этом шаге мы рассмотрим особенности этого класса.

    Тип bytearray представляет собой изменяемую последовательность целых чисел в диапазоне 0 < x < 255.


См. документацию Python "bytes": https://docs.python.org/3/library/stdtypes.html#bytearray.

    Они тесно связаны с объектами bytes, при этом главное их отличие в том, что объекты bytearray можно свободно изменять - вы можете переписывать элементы, удалять существующие элементы или добавлять новые. Объект bytearray будет соответствующим образом расти и сжиматься.

    Объекты bytearray могут быть преобразованы обратно в неизменяемые объекты bytes, но это влечет за собой копирование абсолютно всех хранящихся в них данных - весьма медленная операция, занимающая O(n) времени.

>>> arr = bytearray((0, 1, 2, 3))
>>> arr[1]
1
# Метод repr для bytearray:
>>> arr
bytearray(b'\x00\x01\x02\x03')
# Байтовые массивы bytearray изменяемы:
>>> arr[1] = 23
>>> arr
bytearray(b'\x00\x17\x02\x03')
>>> arr[1]
23
# Байтовые массивы bytearray могут расти и сжиматься в размере:
>>> del arr[1]
>>> arr
bytearray(b'\x00\x02\x03')
>>> arr.append(42)
>>> arr
bytearray(b'\x00\x02\x03*')
# Байтовые массивы bytearray могут содержать только "байты"
# (целые числа в диапазоне 0 <= x <= 255)
>>> arr[1] = 'привет'
Traceback (most recent call last):
.   .   .   .
TypeError: 'str' object cannot be interpreted as an integer
>>> arr[1] = 300
Traceback (most recent call last):
.   .   .   .
ValueError: byte must be in range(0, 256)
# bytearrays может быть преобразован в байтовые объекты:
# (Это скопирует данные)
>>> bytes(arr)
b'\x00\x02\x03*'

    На следующем шаге мы подитожим изученный материал.




Предыдущий шаг Содержание Следующий шаг