V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sculley
V2EX  ›  Python

求帮忙改写一个循环

  •  
  •   sculley · 2015-01-16 11:41:53 +08:00 · 3040 次点击
    这是一个创建于 3636 天前的主题,其中的信息可能已经有所发展或是发生改变。
    
    以上是一段统计代码的一部分,data_list 是待统计数据, func_list 是统计用到的一些函数,功能相似不相同,循环深度由func_list而定,其他需要的信息再回复吧。

    n-1是下标,不是真的-1哈~
    第 1 条附言  ·  2015-01-16 12:54:49 +08:00
    n-1的问题还是换个图吧
    
    第 2 条附言  ·  2015-01-16 15:01:35 +08:00
    添加了个完整些的demo,功能就是把列表中的元素根据元素属性分组并计算一些东西出来,demo的输出和代码见下面
    
    第 3 条附言  ·  2015-01-16 15:02:54 +08:00
    请帮忙的就是98行到106行之间的代码如果处理的函数个数不定的时候要怎么写,还没想到怎么写递归
    第 4 条附言  ·  2015-01-16 16:58:39 +08:00
    已解决
    .js
    7 条回复    2015-01-16 15:11:59 +08:00
    loading
        1
    loading  
       2015-01-16 12:33:35 +08:00 via Android
    你能把下标直接写n-1,而不是n_1……
    我不敢帮你,我不想玩《无尽的任务-最新资料篇》
    sculley
        2
    sculley  
    OP
       2015-01-16 12:48:34 +08:00
    图里的写法只是方便表示,程序里没有这些,真的不知道怎么改这种循环
    sumhat
        3
    sumhat  
       2015-01-16 12:57:11 +08:00
    请独立完成作业
    ligyxy
        4
    ligyxy  
       2015-01-16 13:01:04 +08:00
    用map或者pandas里的apply函数

    这代码看得太吃力,没法细说了
    ruoyu0088
        5
    ruoyu0088  
       2015-01-16 13:23:30 +08:00
    用递归就可以解决吧。你给一个能运行的嵌套循环的例子,才好帮你改写。否则不知道结果对不对。
    zerh925
        6
    zerh925  
       2015-01-16 13:54:14 +08:00
    data_list = [obj1, obj2, ..., objn]
    func_list = [ST1_func, ST2_func, ..., STn_func]
    STout_list = []
    STout_list.append(ST1_func(data_list))

    for index, func in enumerate(func_list[1:]):
    out_list.append(func(out_list[index-1])

    NO WARRANTY!!!
    wangyongbo
        7
    wangyongbo  
       2015-01-16 15:11:59 +08:00
    def a(d, func):
    if len(func) == 1:
    rturn func[0][x]
    r = func[0](x)
    for k,v in r.iteritems():
    r[k] = a(v, func[1:])
    return r

    a(data_list, func_list)

    这样对不对?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:44 · PVG 06:44 · LAX 14:44 · JFK 17:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.