在Python中根据自己的输出生成迭代列表
对不起,这似乎是一个基本问题,但我在任何地方都找不到。在Python2中,我想将一个单变量函数应用于它自己的输出,存储所有步骤的列表,即如果f(x)返回x*x,然后从2开始迭代,我需要在Python中根据自己的输出生成迭代列表,python,python-2.7,iteration,unfold,Python,Python 2.7,Iteration,Unfold,对不起,这似乎是一个基本问题,但我在任何地方都找不到。在Python2中,我想将一个单变量函数应用于它自己的输出,存储所有步骤的列表,即如果f(x)返回x*x,然后从2开始迭代,我需要 [2,4,16,256,65536,…] 理想情况下,我需要传入我的函数f、第一个输入1,以及我希望保留的迭代次数 在某种意义上,我想这与函数式编程中的reduce相反,与unfold有些相似 做这件事的一个天真的方法是写作 out=[2] 对于x范围内的x(5): out.append(f(out[-1]))
[2,4,16,256,65536,…]
理想情况下,我需要传入我的函数f
、第一个输入1
,以及我希望保留的迭代次数
在某种意义上,我想这与函数式编程中的reduce
相反,与unfold
有些相似
做这件事的一个天真的方法是写作
out=[2]
对于x范围内的x(5):
out.append(f(out[-1]))
做这件事的好方法是什么?
非常感谢。您需要的是一个“”。比如说,
def f(x, n):
for _ in range(n):
yield x
x = x * x
l = list(f(2, 5))
print(l) # [2, 4, 16, 256, 65536]
或
您需要的是一个“”。比如说,
def f(x, n):
for _ in range(n):
yield x
x = x * x
l = list(f(2, 5))
print(l) # [2, 4, 16, 256, 65536]
或
您需要的是一个“”。比如说,
def f(x, n):
for _ in range(n):
yield x
x = x * x
l = list(f(2, 5))
print(l) # [2, 4, 16, 256, 65536]
或
您需要的是一个“”。比如说,
def f(x, n):
for _ in range(n):
yield x
x = x * x
l = list(f(2, 5))
print(l) # [2, 4, 16, 256, 65536]
或
理想情况下,我需要传入函数f、第一个输入1和
我希望保留的迭代次数
这是一个接受函数、起始值和迭代计数的展开函数
def unfold(function, start, iterations):
results = []
for _ in range(iterations):
results.append(start)
start = function(start)
return results
您可以按预期使用:
>>> print unfold(lambda x: x*x, 2, 5)
[2, 4, 16, 256, 65536]
理想情况下,我需要传入函数f、第一个输入1和
我希望保留的迭代次数
这是一个接受函数、起始值和迭代计数的展开函数
def unfold(function, start, iterations):
results = []
for _ in range(iterations):
results.append(start)
start = function(start)
return results
您可以按预期使用:
>>> print unfold(lambda x: x*x, 2, 5)
[2, 4, 16, 256, 65536]
理想情况下,我需要传入函数f、第一个输入1和
我希望保留的迭代次数
这是一个接受函数、起始值和迭代计数的展开函数
def unfold(function, start, iterations):
results = []
for _ in range(iterations):
results.append(start)
start = function(start)
return results
您可以按预期使用:
>>> print unfold(lambda x: x*x, 2, 5)
[2, 4, 16, 256, 65536]
理想情况下,我需要传入函数f、第一个输入1和
我希望保留的迭代次数
这是一个接受函数、起始值和迭代计数的展开函数
def unfold(function, start, iterations):
results = []
for _ in range(iterations):
results.append(start)
start = function(start)
return results
您可以按预期使用:
>>> print unfold(lambda x: x*x, 2, 5)
[2, 4, 16, 256, 65536]
如果您的第一个输入是
1
,则输出是[1,1,1,…],对吗?如果您的第一个输入是1
,则输出是[1,1,1,…],对吗?如果您的第一个输入是1
,则输出是[1,1,1,…],对吗?顺便说一句,对于Python 2.BTW,请使用xrange()
,对于Python2.BTW使用xrange()
,对于Python2.BTW使用xrange()
,对于Python2.BTW使用xrange()
。我不明白这怎么会比我在问题中的代码示例更好,除了你把它抽象成一个独立的函数之外?你也可能想用xrange而不是range。我不明白这怎么会比我在这个问题上的代码示例更好,除了你把它抽象成一个独立的函数之外?你也可能想用xrange而不是range。我不明白这怎么会比我在这个问题上的代码示例更好,除了你把它抽象成一个独立的函数之外?你可能还想用xrange而不是range。我不明白这怎么会比我在问题中的代码示例更好,除了你把它抽象成一个独立的函数之外?你可能还想用xrange而不是range。