当获取
range(1,100)
时,我得到:
[ 1, 2, 3, 4, 5 ... 99 ]
我需要像这个范围的zip之类的东西:
[ 50, 49, 51, 48, 52, 47, 53 ... 99 ]
如何获取它?
背景 :这都是关于比特币谜题66的。
首先我做了对过去已知的私钥进行线性回归预测,直到第 65 题为止。我把第 66 个谜题和后面的两个谜题作为我想要得到的预测。我得到了三个整数。
现在我不想从
number-1M
到
number+1M
搜索,因为我可能用原始数字更接近真实的私钥,所以我需要从中间搜索。这就是我们所需要的答案。
def custom_range(number, offset):
"""
生成一个以给定数字为中心、以交替偏移量扩展的数字序列。
Args:
number: 中心数字。
offset: 从中心数字开始的初始偏移量。
Yields:
序列中的下一个数字。
"""
yield number
for i in range(1, offset + 1):
yield number - i
yield number + i
# 示例用法:
number = 50
offset = 49
for i in custom_range(number, offset):
print(i, end=" ")
解释:
-
custom_range(number, offset)
函数: -
接收
number
(你要搜索的中心数字)和offset
(搜索范围,在本例中为 1,000,000)。 -
它使用
yield
关键字,使其成为一个生成器函数,可以根据需要生成数字,而不是一次性生成整个列表。 -
生成中心数字:
-
函数首先
yield number
,将中心数字作为序列中的第一个数字。 -
生成交替偏移量:
-
for i in range(1, offset + 1):
循环从 1 到offset
迭代。 -
在每次迭代中:
-
yield number - i
:生成比中心数字小i
的数字。 -
yield number + i
:生成比中心数字大i
的数字。 - 这种交替生成确保首先搜索接近中心数字的数字,逐渐向外扩展。
-
如何使用:
-
将
number
替换为的中心数字(来自的线性回归预测)。 -
将
offset
设置为所需的搜索范围(在本例中为 1,000,000)。 -
custom_range(number, offset)
现在将生成一个以的中心数字开始并以交替偏移量扩展的数字序列。
通过使用这个生成器,可以有效地在希望的范围内搜索私钥,首先优先考虑靠近中心数字的值。
标签:python,python-3.x,range From: 77883241