Liuw's Thinkpad

想要赢就先学会输,想要成功就先学会失败

Python写的排列组合函数

with one comment

昨天做东西的时候用到这个了。转过来的,觉得不错先记下了。

def comb(items, n=None):
    if n is None:
        n = len(items)
    for i in range(len(items)):
        v = items[i:i+1]
        if n == 1:
            yield v
        else:
            rest = items[i+1:]
            for c in comb(rest, n-1):
                yield v + c

def perm(items, n=None):
    if n is None:
        n = len(items)
    for i in range(len(items)):
        v = items[i:i+1]
        if n == 1:
            yield v
        else:
            rest = items[:i] + items[i+1:]
            for p in perm(rest, n-1):
                yield v + p

yield这个关键字,可以看一下limodou的一[Python 学习]2.5版yield之学习心得

© 2009, liuw. All rights reserved.

Written by liuw

August 14th, 2009 at 8:55 am

One Response to 'Python写的排列组合函数'

Subscribe to comments with RSS or TrackBack to 'Python写的排列组合函数'.

  1. 貌似python挺简洁嘛

      (Quote)

    boluor

    17 Aug 09 at 18:53

Leave a Reply

*