2017-04-22 40 views
1
import random 

def gennum(count=1): 
    num1=[] 
    temp2={} 
    for i in range(1,50): 
     num1.append(i) 
    for j in range(count): 
     temp2[j]=random.sample(num1,7) 
    return temp2 

print(gennum(3000)) 

當我嘗試創建超過3000+的記錄。速度真的很慢。python shell變得遲緩,有時沒有響應。提高字典的性能超過3000個條目

1. laggy是由代碼或創建的記錄太多造成的?

2.個別字典的最大尺寸是多少?

3.如果有人能夠推薦一本關於python coz詳細介紹所有話題的書籍,我會在閱讀2本關於列表,dict等的python書籍後解決上述問題,我無法找到解決方案。

我是編程新手,我的英文不好。感謝您的耐心!

+2

隨機數字生成速度慢。推薦書籍等明確超出了StackOverflow的範圍。 –

+0

字典大小僅受內存限制,理論上(也可以,它也受數組在平臺上的最大索引限制)。構造大小爲3000的字典應該非常快,除非該代碼的某些部分是昂貴的。隨機數字生成是昂貴的。無論如何,您的代碼會立即在我的機器上運行... –

+0

同樣,你的代碼在我的機器上運行了大約1秒鐘。你可以刪除的一件事就是完整的num1列表;只是使用範圍本身來挑選random.sample。 –

回答

7

這實際上並不是創建使得shell滯後而沒有響應的字典,這是因爲print聲明,python IDLE(我假設)不支持打印大量內容。如果您不打印,但將其存儲在如下變量中:num = gennum(3000),要檢查,print(len(gennum))將輸出3000,它會立即完成。如果您真的想要查看它,請嘗試將其保存到文本文件中,然後從中查看。

備註:從控制檯(Terminal,cmd)運行腳本可以正常打印,不會出現任何問題,因爲它們最多可以顯示30000字符,但在此之後,控制檯會自動刪除開頭以將總字符數限制。但基本上,這取決於你的系統。