如果我有一個包含1000萬個對象的列表,我該如何快速過濾列表。通過列表理解需要大約4-5秒的時間完成一次迭代。在python中是否有任何有效的數據結構或庫?或者python不適合大數據集?在python中過濾/迭代非常大的列表
3
A
回答
2
Itertools專爲高效循環而設計。特別是,您可能會發現ifilter
適合您的目的。迭代大數據結構總是很昂貴,但是如果您只需要一些數據,那麼懶惰評估就可以提供很多幫助。
你也可以嘗試使用生成器表達式,這些表達式通常與其列表理解對應物(儘管用法可能不同)或生成器相同,這也具有懶惰評估的好處。
3
如果你有統一的數字類型&如果速度是你的主要目標(你想使用python),請使用Numpy數組。
+0
我們如何知道他的對象是數字? – 2011-01-26 02:24:43
0
即使在一個非常簡單的整型數組上使用內建函數也需要幾秒鐘才能在我的計算機上進行評估。
>>> l=[1]*10000000
>>> s=filter(lambda x:True,l)
我建議你使用一種不同的方法,如使用Numpy或懶惰的評價與generators和/或使用迭代模塊itertools
相關問題
- 1. TypeError:在Python中的非序列迭代
- 2. 迭代通過Python列表
- 3. 通過python中的YAML列表迭代
- 4. Python自定義迭代器:通過非序列迭代
- 5. 列表中的Python迭代
- 6. 的Python - 迭代通過整數列表
- 7. Python:迭代列表
- 8. python迭代列表
- 9. Python列表迭代
- 10. Python中的Python列表和迭代器
- 11. 通過Python中的迭代重構列表列表
- 12. 如何在迭代非常大的列表時處理崩潰(> 100 000)
- 13. 過濾器過濾列表在Python 3
- 14. python:迭代通過動態列表
- 15. 迭代python列表:迭代順序
- 16. Python 2to3,有條件地迭代列表(過濾器vs列表理解)
- 17. 在大列表中進行迭代
- 18. 在Python中跳過迭代
- 19. 迭代通過Python列表對和更新迭代
- 20. 無法在Python中迭代列表3
- 21. 如何在Python中迭代JSON列表?
- 22. 在Python中對列表進行迭代
- 23. 在Python過濾列表
- 24. 過濾Python列表
- 25. Python的迭代邏輯:迭代中的200組列表中openpyxl
- 26. 在不使用迭代器的情況下過濾列表
- 27. Python:列表的迭代列表
- 28. 通過迭代Python字典非常緩慢
- 29. Python TypeError:通過簡單列表上的非序列進行迭代
- 30. 在PLSQL中,你如何迭代更新一個非常大的表的字段?
爲什麼它是一個列表?你有其他選擇。某種類型的映射可能比平面列表要聰明得多。你真正**的問題是什麼? – 2011-01-26 02:18:52
還是你的過濾功能慢? – 2011-01-26 02:24:45