web-dev-qa-db-fra.com

Comment créer un octet ou un tableau d'octets de longueur donnée rempli de zéros en Python?

Toutes les solutions que j'ai trouvées concernaient des listes.

Merci.

34
Yan

Facile:

bytearray(100)

vous donnera 100 octets zéro.

55
Ned Batchelder

Pour bytes, on peut également utiliser la forme littérale b'\0' * 100.

# Python 3.6.4 (64-bit), Windows 10
from timeit import timeit
print(timeit(r'b"\0" * 100'))  # 0.04987576772443264
print(timeit('bytes(100)'))  # 0.1353608166305015

Update1: Avec repli constant dans Python 3.7 , le littéral de est maintenant presque 20 fois plus vite.

Update2: Le pliage apparemment constant a une limite:

>>> from dis import dis
>>> dis(r'b"\0" * 4096')
  1           0 LOAD_CONST               0 (b'\x00\x00\x00...')
              2 RETURN_VALUE
>>> dis(r'b"\0" * 4097')
  1           0 LOAD_CONST               0 (b'\x00')
              2 LOAD_CONST               1 (4097)
              4 BINARY_MULTIPLY
              6 RETURN_VALUE
10
AXO