Pythonでは、リストはどれくらい大きくできますか?約12000個の要素のリストが必要です。ソートなどのリストメソッドを実行できますか?
sys.maxsize
プラットフォームのPy_ssize_t型でサポートされている最大の正の整数。したがって、最大サイズのリスト、文字列、辞書、および他の多くのコンテナが持つことができます。
私のコンピューター(Linux x86_64):
>>> import sys
>>> print sys.maxsize
9223372036854775807
もちろん大丈夫です。実際には、自分で簡単に確認できます。
l = range(12000)
l = sorted(l, reverse=True)
私のマシンでこれらの行を実行するのにかかった:
real 0m0.036s
user 0m0.024s
sys 0m0.004s
しかし、他のみんなが言ったように。配列が大きいほど、操作が遅くなります。
カジュアルコードでは、数百万の要素を持つリストを作成しました。 Pythonのリストの実装は、システムのメモリ量によってのみ制限されると考えています。
さらに、リストのメソッド/関数は、リストのサイズに関係なく機能し続ける必要があります。
パフォーマンスに関心がある場合は、 NumPy などのライブラリを調べる価値があります。
12000要素はPythonでは何もありません...実際、Pythonインタープリターがシステムにメモリを持っている限り、要素の数は増やすことができます。
リストのパフォーマンス特性 はEffbotで説明されています。
Pythonリストは、実際には高速ランダムアクセス用のベクトルとして実装されているため、コンテナは基本的にメモリ内のスペースと同じ数のアイテムを保持します。 (リストに含まれるポインター用のスペースと、ポイントされるオブジェクト用のメモリー内のスペースが必要です。)
追加はO(1)
(償却された一定の複雑さ)ですが、シーケンスの中央への挿入/削除はO(n)
(線形の複雑さ)の並べ替えを必要とします。リスト。
比較操作には無限の時間がかかるため、ソートの質問はより微妙です。非常に遅い比較を実行している場合、長い時間がかかりますが、 Pythonのリストデータ型 の問題ではありません。
反転には、リスト内のすべてのポインターを交換するのに必要な時間がかかります(各ポインターに1回触れると、必要に応じてO(n)
(線形複雑度)。
システムによって異なります(RAMに依存)。見つける最も簡単な方法は
import six six.MAXSIZE 9223372036854775807
ドキュメント に従って、list
およびdict
の最大サイズも指定します
使用可能なRAMの合計量によってのみ制限されると思います。明らかに、配列が大きいほど、その上での操作に時間がかかります。