当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 20 篇帖子 ]  前往页数 上一页  1, 2
作者 内容
16 楼 
 文章标题 : Re: 大家帮忙看看这段程序,关于python的生成器使用
帖子发表于 : 2012-11-09 20:51 

注册: 2006-12-23 10:51
帖子: 49
送出感谢: 0 次
接收感谢: 0 次
哥几个还真不客气!
问题解决。重新整理下,贴上!欢迎继续拍砖。
:em06

代码:
# 从列表中移除一个元素,不影响原列表
def del_e(l, e):
    ll=l[:]
    try:
        ll.remove(e)
    except:
        pass
    return ll

# 简单循环实现
def cq0(ss=[1], all=[1,2,3,4]):
    i1 = ss[0]
    sslist=[]
    for i2 in del_e(all, i1):
        for i3 in del_e(all, i2):
            for i4 in del_e(all, i3):
                for i5 in del_e(all, i4):
                    for i6 in del_e(all, i5):
                        ss=[i1,i2,i3,i4,i5,i6]
                        sslist.append(ss)
    return sslist

# 递归实现
def cq1(ss=[1], all=[1,2,3,4], sslist=[], npass=6):
    nexts=del_e(all, ss[-1])
    for i in nexts:
        ss2=ss+[i]
        if len(ss2)==npass:
            sslist.append(ss2)
        else:
            cq1(ss2, all, sslist, npass)
    return sslist

# 递归+生成器
def cq2(ss=[1], all=[1,2,3,4], npass=6):
    nexts=del_e(all, ss[-1])
    for i in nexts:
        ss2=ss+[i]
        if len(ss2)==npass:
            yield ss2
        else:
            for e in cq2(ss2, all, npass):
                yield e

   
ll=[i for i in cq0() if i[0]==i[-1] and not 1 in i[1:-1]]
print len(ll)

ll=[i for i in cq1() if i[0]==i[-1] and not 1 in i[1:-1]]
print len(ll)

ll=[i for i in cq2() if i[0]==i[-1] and not 1 in i[1:-1]]
print len(ll)


页首
 用户资料  
 
17 楼 
 文章标题 : Re: 大家帮忙看看这段程序,关于python的生成器使用
帖子发表于 : 2012-11-09 23:49 
头像

注册: 2010-10-09 23:01
帖子: 7210
送出感谢: 8
接收感谢: 23
锤子出现了,我也来凑热闹,从微博跳过来的 :em01


_________________
GitHub博客——稍微改了一下版面(于2012/8/23
新浪微博——话痨
新浪博客——伪技术博客
GitHub主页——充斥眼球的Common Lisp


页首
 用户资料  
 
18 楼 
 文章标题 : Re: 大家帮忙看看这段程序,关于python的生成器使用
帖子发表于 : 2012-11-11 22:33 
头像

注册: 2010-06-16 1:05
帖子: 14676
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
哈哈,刚刚在给同学写最小二乘法计算器的时候发现这算法可以写成一行。。。虽然写得不怎么样,但是结果是正确的
代码:
(lambda mv,g:'mv='+str((lambda mv,g:sum(mv)/len(mv)-((lambda mv,g:sum([(i-sum(mv)/len(mv))*(j-sum(g)/len(g)) for i,j in zip(mv,g)])/sum([(i-sum(g)/len(g))**2 for i in g]))(mv,g))*(sum(mv)/len(mv)))(mv,g))+'+'+str(sum([(i-sum(mv)/len(mv))*(j-sum(g)/len(g)) for i,j in zip(mv,g)])/sum([(i-sum(g)/len(g))**2 for i in g]))+'*g')(mv,g)


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
19 楼 
 文章标题 : Re: 大家帮忙看看这段程序,关于python的生成器使用
帖子发表于 : 2012-11-11 23:03 

注册: 2006-12-23 10:51
帖子: 49
送出感谢: 0 次
接收感谢: 0 次
ee.zsy,
http://myzsyweb.blogspot.com竟然不能访问~~


页首
 用户资料  
 
20 楼 
 文章标题 : Re: 大家帮忙看看这段程序,关于python的生成器使用
帖子发表于 : 2012-11-12 14:05 
头像

注册: 2010-10-09 23:01
帖子: 7210
送出感谢: 8
接收感谢: 23
linz_p 写道:
ee.zsy,
http://myzsyweb.blogspot.com竟然不能访问~~

因为那是GAE建出来的博客啊,GAE不能访问了 :em09


_________________
GitHub博客——稍微改了一下版面(于2012/8/23
新浪微博——话痨
新浪博客——伪技术博客
GitHub主页——充斥眼球的Common Lisp


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 20 篇帖子 ]  前往页数 上一页  1, 2

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译