我试图创建一个指数衰减的固定长度与预先确定的半衰期尽可能有效的列表。
假设我的半衰期为1,列表长度为5,它将返回:
[1.0, 0.5, 0.25, 0.125, 0.0625]发布于 2017-04-25 14:27:00
当一个简单的列表理解可以完成时,没有必要使事情过于复杂。
r = 0.5
a = 1.0
n = 5
l = [a*r**i for i in xrange(n)]半衰期为2,设定
r = 0.5 ** 0.5
[1.0, 0.7071067811865476, 0.5000000000000001, 0.35355339059327384, 0.25000000000000006]发布于 2017-04-25 14:27:34
尝试这样的方法,只使用列表理解
half_life = [0.5**i for i in range(5)]output = [1.0, 0.5, 0.25, 0.125, 0.0625]
发布于 2017-04-25 14:26:57
这里有一种使用生成器函数和itertools.islice来实现它的方法:
from itertools import islice
def halflife(n=1):
while True:
yield n
n /= 2
print(list(islice(halflife(), None, 5)))
# [1, 0.5, 0.25, 0.125, 0.0625]
print(list(islice(halflife(2), None, 5)))
# [2, 1.0, 0.5, 0.25, 0.125]https://stackoverflow.com/questions/43613407
复制相似问题