1000万のオブジェクトを含むリストがある場合、リストを素早くフィルタリングするにはどうすればいいですか?リストの理解を通じた完全な反復には約4〜5秒かかります。これのための効率的なデータ構造やライブラリはありますか?または、Pythonは大量のデータセットには適していませんか?非常に大きなリストのPythonでのフィルタリング/反復
答えて
Itertoolsは効率的なループ処理を行うように設計されています。特に、あなたの目的に合ったifilter
が見つかるかもしれません。大規模なデータ構造を反復することは常にコストがかかりますが、一度にいくつかのデータが必要な場合は、遅延評価が大いに役立ちます。
ジェネレータ式は、通常はリストの理解度と同じですが(使用法は異なるかもしれませんが)、ジェネレータも使用できます(遅延評価の利点もあります)。
均一なタイプの数字がある場合は、&スピードが主な目標である場合(そしてPythonを使用する場合)は、Numpy配列を使用します。
彼のオブジェクトが数字であることはどうやってわかるのですか? –
私はしません。私は私の答えを修飾します。 – Gerrat
非常にプリミティブな整数配列の組み込み関数を使用しても、コンピュータで評価するのに数秒かかります。
>>> l=[1]*10000000
>>> s=filter(lambda x:True,l)
は、私は、このようなgeneratorsとNumpyまたは遅延評価を使用して、および/または反復モジュールitertools
これは整数配列ではなく、プリミティブではありません。これは、プリミティブ配列ではないO(1)のパフォーマンスを与える、 'append'や' extend'のようなさまざまな最適化された操作を持つサイズ変更可能な、異種のリストです。実際、 'numpy'配列は、Pythonリストよりもプリミティブな整数配列に近いものです。 Python 3では 'filter'はすでに怠惰です。 –
- 1. Pythonの非常に大きなブールリスト
- 2. Pythonリスト、反復
- 3. 非常に大きなPythonスクリプト
- 4. C反復までの非常に大きな数に - コンパイラはに関する警告unsigned int型
- 5. PLSQLでは、非常に大きなテーブルのフィールドを反復的に更新しますか?
- 6. Python - ネストされたリストの反復
- 7. vb.netで非常に、非常に大きな数字
- 8. Python - スレッドスクリプトでリストを反復する
- 9. 非常に大きなnetCDFファイルをPythonで扱う
- 10. のJava - 非常に大きな数(600851475143)
- 11. Pythonの単純な反復
- 12. Lispリストの反復
- 13. 非常に大きなファイルを解析するPython json
- 14. Python Djangoテンプレート:リストを反復する
- 15. C#RSClientPrint非常に大きなスプール
- 16. jQueryモバイルフレームワークと非常に大きなデータリスト
- 17. 非常に大きなJarファイルとFAT32
- 18. 非常に大きなレンダリングUIscrollview UIImage + Video
- 19. 非常に大きなビットマップを描く
- 20. 非常に大きなスクロールGtkDrawingArea
- 21. optomise非常に大きなテーブルクエリ
- 22. 条件付き反復リストの作成
- 23. Python - リスト文字列のリストを反復する
- 24. Javaのリスト反復子
- 25. 反復でリストの要素を変更する(Python)
- 26. 反復的にシャッフルされたリストをPythonで作成する
- 27. Pythonのdeepcopyの反復バージョン
- 28. C#を使用して非常に大きなリストをAzure blobストレージにシリアライズ
- 29. <c:foreach jsp反復リストのリスト
- 30. Pythonのマップ機能反復
なぜそれがリストであるを使用して別のアプローチを使用して、あなたをお勧めしたいですか?他にも選択肢があります。いくつかの種類のマッピングは、フラットリストよりもはるかにスマートです。あなたの**本当の**問題は何ですか? –
またはフィルタリング機能が遅いですか? –