(his commentためマーティへの帽子先端...)
あなただけの符号なしバイト(値が[0、255])に関係している場合は、最も簡単な答えは内蔵かもしれませんbytearray
とその不変の兄弟で、bytes
。 そのデフォルト__repr__
は「紐状」、整数のではないリストであるので、一つの潜在的な問題は、これらはエンコードされた文字列(読み取りまたは外の世界への書き込み)を表すことを意図していることである。
>>> lst = [0x10, 0x20, 0x30, 0x41, 0x61, 0x7f, 0x80, 0xff]
>>> bytearray(lst)
bytearray(b'\x10 0Aa\x7f\x80\xff')
>>> bytes(lst)
b'\x10 0Aa\x7f\x80\xff'
。なお、 '0'
、'A'
、および'a'
は文字通り表示されますが、「印刷できない」値は'\x##'
文字列エスケープシーケンスとして表示されます。 これらのバイトを整数のの束として考えると、これはあなたが望むものではありません。
固定幅の整数または浮動小数点数の均等配列(C言語とよく似ています)では、標準ライブラリのarray
moduleを使用してください。より複雑なデータについては
>>> import array
# One megabyte of unsigned 8-bit integers.
>>> a = array.array('B', (n % 2**8 for n in range(2**20)))
>>> len(a)
1048576
>>> a.typecode
'B'
>>> a.itemsize
1
>>> a.buffer_info() # Memory address, memory size.
(24936384, 1048576)
>>> a_slice = a[slice(1024, 1040)] # Can be sliced like a list.
>>> a_slice
array('B', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
>>> type(a_slice) # Slice is also an array, not a list.
<class 'array.array'>
、struct
moduleはずっとCのstruct
キーワードのように、異種のレコードを包装するためです。 Cとは異なり、array
をstruct
にする明らかな方法はありません。
これらのデータ構造はすべて、PythonのBuffer Protocolを使用しています(CPythonでは少なくとも)Pythonクラスがその内部のCのような配列を他のPythonコードに直接公開することができます。 何か複雑なことをする必要がある場合は、これを学ぶ必要があるかもしれません... または、あきらめてNumPyを使用してください。
ライブラリを使用できるのであれば、[numpy'](http://www.numpy.org/)は最適化された配列とそれらを操作するための効率的な機能を提供します。配列のdtypeパラメータを使用して要素のメモリサイズを指定できます。 – Craig
適切な_タイプコードで 'array.array()'を使ってみてください。 – martineau
marineauのコメントをフォロー:標準ライブラリの一部である['array'モジュール](https://docs.python.org/library/array.html)のドキュメント。 –