5.5 組み込みモジュール array

  

このモジュールは、基本的な値(キャラクタ・整数・浮動小数点) のアレイを効率的に表現できる新しいオブジェクトを定義します。 arrayはシーケンスタイプであり、 格納されるオブジェクトのタイプに制限があることを除けば、 全くリストのように振る舞います。 オブジェクトのタイプは、オブジェクト生成時に 一文字のタイプコードを用いて指定します。 以下のタイプコードが定義されています。

タイプコード C データ型 バイト内最小サイズ
'c' character 1
'b' signed integer 1
'B' unsigned integer 1
'h' signed integer 2
'H' unsigned integer 2
'i' signed integer 2
'I' unsigned integer 2
'l' signed integer 4
'L' unsigned integer 4
'f' floating point 4
'd' floating point 8

値の実際の表現は、マシンアーキテクチャ (厳密に言うとCの実装)によって決定されます。 itemsize属性を通して実際のサイズにアクセスすることができます。 Pythonの単純な整数型はCのunsigned(long)整数を表現することができないため、 'L''I'項目として格納される値は、 Pythonのlong整数として表現されます。

モジュールは以下の関数とタイプオブジェクトを定義します:

array (typecode[, initializer])
項目のデータタイプが、typecodeによって制限されている 新規アレイを返します。 オプションで、文字列またはリストの値であるinitializerを指定 すれば、その値で初期化されます。 このとき、 アレイに初期の項目を追加するために、 リストまたは文字列は 新規アレイのメソッドfromlist()またはfromstring()(下を参照して下さい)に 渡されます。

ArrayType
array()によって返されるオブジェクト一致するタイプオブジェクトです。

アレイオブジェクトは以下のデータ項目とメソッドを提供します:

typecode
アレイの生成時に使用されるタイプコード文字です。

itemsize
内部表現における1つのアレイ項目のバイト長です。

append (x)
xをもつ新しい項目をアレイの末尾に追加します。

buffer_info ()
アレイの内容を内容を保持するのに使用されているバッファの メモリアドレスとバイト長を表すタプル (address, length)を 返します。 メモリアドレスを 必要とする ioctl()操作のような 低レベル(本来危険である)入出力インタフェースで動作する時には 便利です。 The returned numbers are valid as long as the array exists and no length-changing operations are applied to it.

byteswap (x)
アレイのすべての項目が``Byteswap''です。 これは整数値のためだけに提供されます。 異なったバイトオーダーをもつマシン上で書かれたファイルから データを読み込むとき、役に立ちます。

fromfile (f, n)
ファイルオブジェクトfからn項目(機械値として)を読み込んで、 それらをアレイの末尾に追加します。 n項目読めなかった場合には EOFErrorが発生しますが、読み込み可能な分だけアレイに追加されます。 fは実際の組み込みファイルオブジェクトでなければなりません。 read()メソッドをもつような他のオブジェクトは許されていません。

fromlist (list)
リストから項目を追加します。 これは、 タイプエラーが発生した場合はアレイは変更されないことを除いて "for x in list: a.append(x)"と同等です。

fromstring (s)
文字列から項目を追加します。 (ファイルからfromfile()メソッドを使用して読まれるのと同様に) 機械値のアレイとして文字列を解釈します。

insert (i, x)
アレイの位置iの前に値xをもつ新しい項目を挿入します。

read (f, n)
リリース1.5.1.から使用は薦められていません。 fromfile()メソッドを使用して下さい。 ファイルオブジェクトfからn項目(機械値として)を読み込んで、 それらをアレイの末尾に追加します。 n項目読めなかった場合には EOFErrorが発生しますが、読み込み可能な分だけアレイに追加されます。 fは実際の組み込みファイルオブジェクトでなければなりません。 read()メソッドをもつような他のオブジェクトは許されていません。

reverse ()
アレイの項目の順番を逆にします。

tofile (f)
ファイルオブジェクトfにすべての項目(機械値として)を書きます。

tolist ()
アレイを同じ項目を持つ通常のリストに変換します。

tostring ()
アレイを機械値のアレイに変えて、ストリング表現を返します。 (tofile()メソッドによってファイルに 書かれるバイトシーケンスと同じです)

write (f)
リリース1.5.1.から使用は薦められていません。 tofile()メソッドを使用して下さい。 ファイルオブジェクトfに、全ての項目を(機械値として)書きます。

アレイオブジェクトが出力されるか、または文字列に変換されるとき、 それはarray(typecode, initializer)というように 表現されます。 アレイが空のときinitializerは省略されます。 アレイが空でないときは、typecodeが`'c'の場合 initializerは文字列に、そうでなければ数字のリストになります。 文字列は、逆クォーテーション(``)を用いて 同じデータタイプと値を持つアレイに変換可能であることが保証されています。

例:

array('l')
array('c', 'hello world')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14])

次も参照して下さい:

モジュール struct    (異質のバイナリデータをパックまたはアンパックします)

guido@python.org