簡體   English   中英

Python,而不是一個包含4000萬個連續數字的列表,我如何制作40個100萬個連續數字列表的2-d列表?

[英]Python, instead of a list of 40 million consecutive numbers how would I make a 2-d list of 40, size 1 million, consecutive number lists?

我目前正在研究MapReduce算法,我需要更好地構建我的數據源。 該程序用於給出在哈希算法中使用的隨機數列表,以找到“好”(低值)哈希值; 與比特幣非常相似。 現在我制作一個包含4000萬個連續數字(nonce)的列表。 但IO中的開銷(使用mincemeat.py)使程序變得非常慢。

目前我正在使用它來創建我的列表

#Build the data source
nonces = [i for i in range(0, 400000)]
#Create a dict with a single entry
datasource = dict(enumerate(nonces))

我怎么能改變第一行代碼來創建一個大小為40的列表,其中包含大小為100萬的列表; 所以第一個列表是1-1mil,然后是1mil到2mil等等? 我是否需要分解並制作for循環,或者是否有一個簡單的襯墊我可以實現這個?

這是我如何實現for循環來實現它,它可以被濃縮嗎? (我知道我有重復的數字..)

nonceList = []
for j in range(0, 40):
    nonceList.append([i for i in range(j*1000000, (j+1)*1000000)])
datasource = dict(enumerate(nonceList))

不要預先生成連續的數字; 只需讓你的mapreduce任務從起始編號生成它們。

例如,對於40個任務,編號為0-40並使用乘數在任務中生成數字; 在Python 2中,使用xrange()生成數字,因為range()將生成一個列表,實現一百萬個整數對象而無法獲得。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM