python - 如何正确组合函数和列表生成器?

标签 python

据我所知,列表生成器比使用 .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/

相关文章:

python - 有什么方法可以将参数传递到 pytest fixture 中?

python - 如何用gensim过滤掉语料库中tf-idf低的词?

python - 遍历 pandas 坐标组并计算距离

python - 我们可以集成 POLQA(感知客观听力质量评估)来检查通话语音质量吗?

python - 将文件从 s3 Bucket 下载到 USERS 计算机

python - Numpy 将二进制字符串解包为单个变量

python - PySpark 如何找到合适数量的集群

python - SQLAlchemy - 过滤子查询负载

python - PySpark 拖放行

python - Pandas 组合多个 csv 文件