web-dev-qa-db-ja.com

Pythonでゼロで満たされた特定の長さのバイトまたはバイト配列を作成するにはどうすればよいですか?

私が見つけた解決策はすべてリスト用でした。

ありがとう。

34
Yan

シンプル:

bytearray(100)

100個のゼロバイトが得られます。

55
Ned Batchelder

bytesの場合、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:​​定数折り畳みPython 3.7 で、リテラルは20倍高速。

Update2:一定の折り畳みには制限があります:

>>> 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