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
kojp
V2EX  ›  Python

关于python列表的循环

  •  
  •   kojp · 2012-03-28 18:18:31 +08:00 · 5402 次点击
    这是一个创建于 4655 天前的主题,其中的信息可能已经有所发展或是发生改变。
    lista=['la','lb','lc']
    listb=['l1','l2','l3']
    listc=['lA','lB','lC']


    listok=[lista[0],listb[0],listc[0],listd[0]]
    listok1=[lista[1],listb[1],listc[1],listd[0]]

    listoks.append(listok)
    listoks.append(listok1)

    listoks是我所需要的~~~

    敢不敢有比较优雅的方法?

    for ..in .

    或者

    lamda ..

    完全用不上。脑子短路了~~~
    8 条回复    1970-01-01 08:00:00 +08:00
    fanzeyi
        1
    fanzeyi  
       2012-03-28 18:30:13 +08:00
    没明白楼主是想干啥……
    kojp
        2
    kojp  
    OP
       2012-03-28 18:31:41 +08:00
    @fanzeyi

    呃。脑子短路。现有点进展了~~~但还是没解决。大概就是想用一个循环或者什么的。

    把已经有的几个列表元素写到另外一个列表里面

    lista=['la','lb','lc']
    listb=['l1','l2','l3']
    listc=['lA','lB','lC']
    listd=['L0','L1','L2']

    listoko=[]
    for i in range(0,3):
    listoko=[lista[i],listb[i],listc[i]]
    print listoko
    fanzeyi
        3
    fanzeyi  
       2012-03-28 18:33:40 +08:00
    In [25]: zip(lista,listb,listc,listd)
    Out[25]: [('la', 'l1', 'lA', 'L0'), ('lb', 'l2', 'lB', 'L1'), ('lc', 'l3', 'lC', 'L2')]

    类似这样?
    kojp
        4
    kojp  
    OP
       2012-03-28 18:36:13 +08:00
    for i in range(0,3):
    print i
    listoko.append([lista[i],listb[i],listc[i]])
    #listoko.append('ahah')
    print listoko
    print "nothing"*10


    总算OK了!!

    好像不到V2EX上来取一下耻。大脑就不会通的。。呵呵

    (短路的原因是,对list.append的返回值理解错误~~~,以及对循环的恐惧症)
    kojp
        5
    kojp  
    OP
       2012-03-28 18:38:35 +08:00
    @fanzeyi
    谢谢~~~

    我苦思冥想了半天。。原来就一个zip搞定了~~~
    话说,我对着书敲代码的时候也用过ZIP的~~~呃。怎么就联系不起来呢。杯具!哎
    yangguang
        6
    yangguang  
       2012-03-28 18:43:47 +08:00
    lista=['la','lb','lc']
    listb=['l1','l2','l3']
    listc=['lA','lB','lC']

    listoks = [map(lambda x: x[i], [lista, listb, listc]) for i in range(2)]
    013231
        7
    013231  
       2012-03-28 19:31:10 +08:00
    列表推导式也可以:
    [[lst[r] for lst in (lista, listb, listc)] for r in range(len(lista))]
    kojp
        8
    kojp  
    OP
       2012-03-28 19:36:45 +08:00
    @013231

    我要一开始想要 的就是这段 这个比较酷的代码 ....以前还能记住的 ,现在连理解都要绕半圈了

    ------但是 ,有 zip的话 ,更 easy哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5565 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 06:57 · PVG 14:57 · LAX 22:57 · JFK 01:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.