Python生成器

时间:2014-03-20 11:48:00

标签: python generator permutation

我在理解这台发电机的工作原理时遇到了问题。它究竟是如何产生排列的?此外,在代码中,yield[items[i]] + cc会产生什么以及在哪里?每次调用yield[]时添加到列表yield[items[i]] + cc的内容是什么? (有什么事吗?)我很抱歉,但我真的很困惑:(

抱歉这样一个新手问题,我希望有人能帮助我更好地理解这个问题!谢谢!

def permutations(items):

    n = len
    if n == 0:
        yield[]
    else:
        for i in range(len(items)):
           for cc in permutations(items[:i] + items[i+1:]:
               yield[items[i]] + cc
for p in permutations(['r','e','d']):
    print ''.join(p)

1 个答案:

答案 0 :(得分:0)

yield是一个声明,如printreturn

想象一下你有一个功能:

def blah(x):
    return x
    return x + 1
    return x + 2
    return x + 3

然后你称之为:

print blah(10)

它只会返回10,并且它将永远不会达到11,12或13,因为函数已经完成。

当你使用yield时,你基本上是在说,"假装这个函数是一个列表......"然后从函数中使用yield语句返回一个又一个值,直到它用完为止,而不是只返回一个值。

这样:

def gen_blah(x):
    yield x
    yield x+1
    yield x+2
    yield x+3

for i in gen_blah(10):
    print i

将打印10,然后打印11,12和13。

因此,置换函数一次产生一个值,然后使用生成器函数的for循环