1. ホーム
  2. python

[解決済み] Python List vs. Array - when to use?

2022-03-22 16:32:23

質問

1次元の配列を作成する場合、リストとして実装するか、標準ライブラリの'array'モジュールを使用することができます。 私はいつも1次元配列にはListを使っています。

arrayモジュールを使いたい理由や事情は何ですか?

パフォーマンスとメモリの最適化のためでしょうか、それとも何か明らかなことを見逃していますか?

解決方法は?

基本的に、Pythonのリストは非常に柔軟で、完全に異種の任意のデータを保持することができ、非常に効率的に、以下のように追加することができます。 償却定数時間 . もし、手間をかけずに効率的にリストを縮小したり拡大したりする必要があるのなら、この方法は最適です。 しかし、これらは C言語の配列よりはるかに大きなスペース これは、リストの各項目が個別のPythonオブジェクトを構築する必要があるためで、たとえ単純なCの型で表現できるデータであっても(たとえば float または uint64_t ).

は、その array.array 一方、この型はC言語の配列の薄いラッパーに過ぎない。 この型は同種のデータ(つまり、すべて同じ型)しか保持することができないので sizeof(one object) * length バイトのメモリが必要です。 たいていの場合、C 配列を拡張機能やシステムコールで公開する必要があるときに使用します (たとえば。 ioctl または fctnl ).

array.array を表現するのも合理的な方法です。 ミュータブル の文字列は、Python 2.x ( array('B', bytes) ). しかし、Python 2.6+と3.xではミュータブルな バイト という文字列を bytearray .

しかし、もしあなたが 数学 NumPy は複雑な多次元配列の演算を自動的にベクトル化することができます。

長い話を短くすると : array.array は、以下の理由で均質な C 言語のデータ配列が必要な場合に便利です。 数学以外の .