8.6. array —数値の効率的な配列—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/array
移動先:案内検索

8.6。 配列 —数値の効率的な配列

このモジュールは、文字、整数、浮動小数点数などの基本値の配列をコンパクトに表すことができるオブジェクトタイプを定義します。 配列はシーケンスタイプであり、リストに格納されているオブジェクトのタイプが制限されていることを除けば、リストと非常によく似た動作をします。 タイプは、オブジェクト作成時にタイプコードを使用して指定されます。これは1文字です。 次のタイプコードが定義されています。

タイプコード Cタイプ Pythonタイプ バイト単位の最小サイズ
'c' char キャラクター 1
'b' 署名された文字 int 1
'B' unsigned char int 1
'u' Py_UNICODE Unicode文字 2(注を参照)
'h' 短い署名 int 2
'H' 署名されていない短い int 2
'i' 署名されたint int 2
'I' unsigned int 長いです 2
'l' 長く署名した int 4
'L' unsigned long 長いです 4
'f' 浮く 浮く 4
'd' ダブル 浮く 8

ノート

'u'タイプコードは、PythonのUnicode文字に対応しています。 ナローUnicodeビルドではこれは2バイトであり、ワイドビルドではこれは4バイトです。


値の実際の表現は、マシンアーキテクチャによって決定されます(厳密に言えば、C実装によって)。 実際のサイズには、itemsize属性からアクセスできます。 'L'および'I'アイテムに格納された値は、取得時にPythonの長整数として表されます。これは、Pythonのプレーン整数型は、Cの符号なし(長)整数の全範囲を表すことができないためです。

モジュールは次のタイプを定義します。

class array.array(typecode[, initializer])

アイテムが typecode によって制限され、オプションの initializer 値から初期化される新しい配列。これは、リスト、文字列、または適切なタイプの要素に対して反復可能である必要があります。

バージョン2.4で変更:以前は、リストまたは文字列のみが受け入れられていました。

リストまたは文字列が指定された場合、イニシャルは新しい配列の fromlist()fromstring()、または fromunicode()メソッドに渡されます(以下を参照)。配列に初期アイテムを追加します。 それ以外の場合、反復可能な初期化子は extends()メソッドに渡されます。

array.ArrayType
array の廃止されたエイリアス。

配列オブジェクトは、インデックス作成、スライス、連結、および乗算の通常のシーケンス操作をサポートします。 スライス割り当てを使用する場合、割り当てられる値は同じタイプコードの配列オブジェクトである必要があります。 それ以外の場合はすべて、TypeErrorが発生します。 配列オブジェクトもバッファインターフェイスを実装し、バッファオブジェクトがサポートされている場所であればどこでも使用できます。

次のデータ項目とメソッドもサポートされています。

array.typecode
配列の作成に使用されるタイプコード文字。
array.itemsize
内部表現の1つの配列項目のバイト単位の長さ。
array.append(x)
x の新しいアイテムを配列の最後に追加します。
array.buffer_info()

現在のメモリアドレスと、配列の内容を保持するために使用されるバッファの要素の長さを示すタプル(address, length)を返します。 バイト単位のメモリバッファのサイズは、array.buffer_info()[1] * array.itemsizeとして計算できます。 これは、特定のioctl()操作など、メモリアドレスを必要とする低レベルの(そして本質的に安全でない)I / Oインターフェイスを操作するときに役立つ場合があります。 返される数値は、配列が存在し、長さ変更操作が適用されていない限り有効です。

ノート

CまたはC ++で記述されたコードの配列オブジェクトを使用する場合(この情報を効果的に利用する唯一の方法)、配列オブジェクトでサポートされているバッファーインターフェイスを使用する方が理にかなっています。 このメソッドは下位互換性のために維持されており、新しいコードでは避ける必要があります。 バッファインターフェイスは、バッファとメモリビューオブジェクトに記載されています。

array.byteswap()
配列のすべての項目を「バイトスワップ」します。 これは、サイズが1、2、4、または8バイトの値でのみサポートされます。 他のタイプの値の場合、RuntimeErrorが発生します。 バイトオーダーが異なるマシンで書き込まれたファイルからデータを読み取る場合に便利です。
array.count(x)
配列内の x の出現回数を返します。
array.extend(iterable)

iterable から配列の最後にアイテムを追加します。 iterable が別の配列である場合、正確に同じタイプコードである必要があります。 そうでない場合は、TypeErrorが発生します。 iterable が配列でない場合、それは反復可能である必要があり、その要素は配列に追加される正しい型である必要があります。

バージョン2.4で変更:以前は、引数は別の配列のみでした。

array.fromfile(f, n)
ファイルオブジェクト f から n アイテムを(マシン値として)読み取り、配列の最後に追加します。 使用可能なアイテムが n 未満の場合、EOFErrorが発生しますが、使用可能なアイテムは引き続き配列に挿入されます。 f は実際の組み込みファイルオブジェクトである必要があります。 read()メソッドを使用した他の処理は実行されません。
array.fromlist(list)
リストからアイテムを追加します。 これは、タイプエラーが発生した場合に配列が変更されないことを除いて、for x in list: a.append(x)と同等です。
array.fromstring(s)
文字列から項目を追加し、文字列をマシン値の配列として解釈します( fromfile()メソッドを使用してファイルから読み取られたかのように)。
array.fromunicode(s)
指定されたUnicode文字列からのデータでこの配列を拡張します。 配列はタイプ'u'配列である必要があります。 それ以外の場合は、ValueErrorが発生します。 array.fromstring(unicodestring.encode(enc))を使用して、Unicodeデータを他のタイプの配列に追加します。
array.index(x)
i が配列内で最初に出現する x のインデックスになるように、最小の i を返します。
array.insert(i, x)
位置 i の前の配列に、値 x の新しいアイテムを挿入します。 負の値は、配列の終わりを基準にしたものとして扱われます。
array.pop([i])
インデックス i のアイテムを配列から削除し、それを返します。 オプションの引数のデフォルトは-1であるため、デフォルトでは最後の項目が削除されて返されます。
array.read(f, n)

バージョン1.5.1以降非推奨: fromfile()メソッドを使用します。

ファイルオブジェクト f から n アイテムを(マシン値として)読み取り、配列の最後に追加します。 使用可能なアイテムが n 未満の場合、EOFErrorが発生しますが、使用可能なアイテムは引き続き配列に挿入されます。 f は実際の組み込みファイルオブジェクトである必要があります。 read()メソッドを使用した他の処理は実行されません。

array.remove(x)
x の最初の出現を配列から削除します。
array.reverse()
配列内の項目の順序を逆にします。
array.tofile(f)
すべてのアイテムを(マシン値として)ファイルオブジェクト f に書き込みます。
array.tolist()
配列を同じ項目の通常のリストに変換します。
array.tostring()
配列をマシン値の配列に変換し、文字列表現を返します( tofile()メソッドによってファイルに書き込まれるのと同じバイトシーケンス)。
array.tounicode()
配列をUnicode文字列に変換します。 配列はタイプ'u'配列である必要があります。 それ以外の場合は、ValueErrorが発生します。 array.tostring().decode(enc)を使用して、他のタイプの配列からUnicode文字列を取得します。
array.write(f)

バージョン1.5.1以降非推奨: tofile()メソッドを使用します。

すべてのアイテムを(マシン値として)ファイルオブジェクト f に書き込みます。

配列オブジェクトが印刷または文字列に変換されると、array(typecode, initializer)として表されます。 initializer は、配列が空の場合は省略されます。それ以外の場合は、 typecode'c'の場合は文字列、それ以外の場合は数値のリストです。 array クラスがfrom array import array。 例:

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

も参照してください

モジュール構造体
異種バイナリデータのパックとアンパック。
モジュール xdrlib
一部のリモートプロシージャコールシステムで使用される外部データ表現(XDR)データのパックおよびアンパック。
数値Pythonドキュメント
数値Python拡張機能(NumPy)は、別の配列型を定義します。 Numerical Pythonの詳細については、 http://www.numpy.org/を参照してください。