Python论坛  - 讨论区

标题:[python-chinese] 谁能帮忙解释下最后一句是什么意思?

2007年11月07日 星期三 18:15

GoodGoodStudy&DayDayUp peixu.zhu在gmail.com
星期三 十一月 7 18:15:41 HKT 2007

浅解如下,如果有错误了,请不吝于指正。

> Message: 2
> Date: Wed, 7 Nov 2007 16:42:34 +0800
> From: clfff.peter <clfff.peter at gmail.com>
> Subject: [python-chinese]
>         谁能帮忙解释下最后一句是什么意思?
> To: python-chinese <python-chinese at lists.python.cn>
> Message-ID:
>         <17573fac0711070042t5f2f7f17odb24c4d639516ac1 at mail.gmail.com>
> Content-Type: text/plain; charset="gb2312"
>
>       from operator import mul, add, truth
>
>       apply_each = lambda fns, args=[]: map(apply, fns, [args]*len(fns))

定义一个 lambda 函数 apply_each,其有2个参数fns, args。
fns是要一个待执行的函数,args是给fns的参数,默认为空。这个
apply_each的功能就是对你传给它的fns的每个成员都调用一下apply(fns[?], args ),其实就是 for f in
fns: apply(f, args)。
最后得到一个列表。

>
>       bools = lambda lst: map(truth, lst)

这个lambda函数就是简单地对lst中的每个成员都调用一遍truth(lst[?])
最后得到一个列表。
>
>       bool_each = lambda fns, args=[]: bools(apply_each(fns, args))

这个lambda函数应该是对fns的每个成员都调用一遍apply(fns[?], args),然后将返回值作为参数再调用函数 truth 得到一个列表。


>
>       conjoin = lambda fns, args=[]: reduce(mul, bool_each(fns, args))

将刚才的命令得到列表逐个调用mul(x[i], x[i+1]),看字面意思就是将这个列表中的值逐个相乘。

>
>       all = lambda fns: lambda arg, fns=fns: conjoin(fns, (arg,)) #lambda

这个lambda函数的作用是生成另一个lambda函数,比如L2,然后调用L2就可以生成conjoin函数。
嘿嘿,让我想起了俄罗斯套娃娃的玩具。
貌似这个东西是拿来发明一个新的语言之类的  ?

> 太多了,看不懂。
> -------------- 涓���ㄥ� --------------
> 一个HTML附件被移除...
> URL: http://python.cn/pipermail/python-chinese/attachments/20071107/77148d9a/attachment-0001.htm

-- 
THINK big, DO small.

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年11月07日 星期三 19:14

clfff.peter clfff.peter在gmail.com
星期三 十一月 7 19:14:36 HKT 2007

非常感谢。
…~        ~
     ----------

在07-11-7,GoodGoodStudy&DayDayUp; <peixu.zhu在gmail.com> 写道:
>
> 浅解如下,如果有错误了,请不吝于指正。
>
> > Message: 2
> > Date: Wed, 7 Nov 2007 16:42:34 +0800
> > From: clfff.peter <clfff.peter在gmail.com>
> > Subject: [python-chinese]
> >         谁能帮忙解释下最后一句是什么意思?
> > To: python-chinese <python-chinese在lists.python.cn>
> > Message-ID:
> >         <17573fac0711070042t5f2f7f17odb24c4d639516ac1在mail.gmail.com>
> > Content-Type: text/plain; charset="gb2312"
> >
> >       from operator import mul, add, truth
> >
> >       apply_each = lambda fns, args=[]: map(apply, fns, [args]*len(fns))
>
> 定义一个 lambda 函数 apply_each,其有2个参数fns, args。
> fns是要一个待执行的函数,args是给fns的参数,默认为空。这个
> apply_each的功能就是对你传给它的fns的每个成员都调用一下apply(fns[?], args ),其实就是 for f in
> fns: apply(f, args)。
> 最后得到一个列表。
>
> >
> >       bools = lambda lst: map(truth, lst)
>
> 这个lambda函数就是简单地对lst中的每个成员都调用一遍truth(lst[?])
> 最后得到一个列表。
> >
> >       bool_each = lambda fns, args=[]: bools(apply_each(fns, args))
>
> 这个lambda函数应该是对fns的每个成员都调用一遍apply(fns[?], args),然后将返回值作为参数再调用函数 truth
> 得到一个列表。
>
>
> >
> >       conjoin = lambda fns, args=[]: reduce(mul, bool_each(fns, args))
>
> 将刚才的命令得到列表逐个调用mul(x[i], x[i+1]),看字面意思就是将这个列表中的值逐个相乘。
>
> >
> >       all = lambda fns: lambda arg, fns=fns: conjoin(fns, (arg,))
> #lambda
>
> 这个lambda函数的作用是生成另一个lambda函数,比如L2,然后调用L2就可以生成conjoin函数。
> 嘿嘿,让我想起了俄罗斯套娃娃的玩具。
> 貌似这个东西是拿来发明一个新的语言之类的  ?
>
> > 太多了,看不懂。
> > -------------- 涓���ㄥ� --------------
> > 一个HTML附件被移除...
> > URL:
> http://python.cn/pipermail/python-chinese/attachments/20071107/77148d9a/attachment-0001.htm
>
> --
> THINK big, DO small.
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20071107/2d4992fe/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号