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