小编sah*_*ama的帖子

收益慢于回报.为什么?

我写了两个具有相同功能的函数f和g

def f(l, count):
    if count > 1:
        for i in f(l, count-1):
            yield i + 1
    else:

        yield from l

for i in f(range(100000),900):
    pass
print('f')
Run Code Online (Sandbox Code Playgroud)

def g(l, count):
    if count > 1:
        tmp = []
        for i in g(l, count-1):
            tmp.append(i+1)
        return tmp
    else:
        return l
for i in g(range(100000),900):
    pass
print('f')
Run Code Online (Sandbox Code Playgroud)

而我认为f shuold会更快但是在运行时g会更快

时间为g

real    0m5.977s
user    0m5.956s
sys     0m0.020s
Run Code Online (Sandbox Code Playgroud)

f的时间

real    0m7.389s
user    0m7.376s
sys     0m0.012s
Run Code Online (Sandbox Code Playgroud)

python yield

2
推荐指数
1
解决办法
1057
查看次数

标签 统计

python ×1

yield ×1