Chinaunix

标题: 菜鸟求助: 大家帮忙看下这段代码!!! [打印本页]

作者: tank064    时间: 2013-01-30 16:58
标题: 菜鸟求助: 大家帮忙看下这段代码!!!
  1. def comb(items, n=None):
  2.     if n is None:
  3.         n = len(items)   
  4.     for i in range(len(items)):
  5.         v = items[i:i+1]
  6.         if n == 1:
  7.             yield v
  8.         else:
  9.             rest = items[i+1:]
  10.             for c in comb(rest, n-1):
  11.                 yield v + c

  12. for x in comb('abc'):
  13.     print x
复制代码
只输出了abc

昨天接触了yield ,所以学习一下,学得过程中 看到了这段代码,来自 http://code.activestate.com/recipes/474124/

说是求 组合的! 我周围没朋友学python,所以我上这来问了!

不知是这段代码不对,还是我对这段代码的功能理解错了,请指正!!!
作者: crifan    时间: 2013-01-31 11:23
可参考:
【整理】Python中的yield用法
中提到的:
Python yield 使用浅析
作者: winway1988    时间: 2013-02-01 10:51
本帖最后由 winway1988 于 2013-02-01 10:53 编辑
  1. [winway@s211 test]$ cat test.py
  2. #! /usr/bin/env python
  3. # -*- coding: utf-8 -*-
  4. #

  5. def comb(items, n=None):
  6.     if n is None:
  7.         n = len(items)
  8.     for i in range(len(items)):
  9.         v = items[i:i+1]
  10.         if n == 1:
  11.            yield v
  12.         else:
  13.             rest = items[0:i] + items[i+1:]
  14.             for c in comb(rest, n-1):
  15.                 yield v + c

  16. for x in comb('abc'):
  17.     print x
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2