据我所知,列表生成器比使用 .append()
快一点。所以我只是想知道如何使用生成器来实现这段代码。重要的是我最终需要获得列表。
这是原始脚本:
x=4
def factorial(n):
f=1
list = []
for n in range(1, n+1):
f = f * n
list.append(f)
return list
testList = factorial (x)
for i in range(x): print(testList[i], end = ' ')
我已经试过了:
f=1
n=4
def fun(n):
f=f*n
return f
testList = [fun(f) for n in range(1, n+1)]
这绝对不是这样做的方法(程序说在函数 f
中没有声明。总的来说......只是试过这个来测试)
也试过这个:
testList = [lambda f : f*n for n in range(1, n+1)]
但我通过这种方式得到的只是函数列表。我仍然可以得到阶乘,但不是它应有的方式。
这对我来说有点问题,因为有一个缓冲区变量(原始脚本中的f
)。
最佳答案
您可以使用 global
关键字以这种方式实现它:
f = 1
n = 4
def fun(n):
global f
f = f * n
return f
testList = [fun(n) for n in range(1, 10+1)]
print(testList)
# [1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]
关于python - 如何正确组合函数和列表生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58063475/