繁体   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